언리얼 엔진 - 게임 프로젝트/GAS 프레임워크 RPG 프로젝트

프로젝트 설정 - 최종) 프로젝트 세부 설정

monstro 2025. 6. 27. 01:54
728x90
반응형

- 개요

프로젝트에 대한 세부적인 설정을 수행하여 플레이어의 스폰입력을 처리하고 카메라를 추가한다

또, 적에게 마우스 커서가 캡쳐되어 있다면 적을 하이라이트하는 기능을 추가한다

 

1) AuraGameModeBase 클래스

 

게임의 룰을 정의하는 GameModeBase 클래스를 추가한다

해당 클래스로부터 상속하여 AuraGameModeBase 클래스를 생성하고 사용한다

실질적인 사용은 해당 GameMode로부터 블루 프린트를 생성하여 이뤄진다

 

2) AuraCharacter 클래스

 

플레이어에 카메라를 추가하기 위해 2개의 프로퍼티를 추가하였다

카메라의 경우 직접 조작하지 않고 Spring Arm을 통해 간접 조작하는 것이 훨씬 안전하고 효율적이다

따라서 카메라의 역할인 CameraComponent카메라를 붙일 SpringArmComponent를 추가한다

 

 

생성자에서는 카메라에 대한 설정을 진행한다

SpringArmCameraComponent 모두 SubObject로 생성하여 AuraCharacter에 종속되도록 한다

추가적으로 플레이어 캐릭터의 조작을 설정하여 Topdown 게임에 맞는 조작감을 구현한다

 

3) HighlightInterface 클래스(인터페이스)

 

대상을 강조하기 위한 용도로 사용하는 HighlightInterface 클래스를 추가한다

멤버 함수들오버라이드되어 강조되는 대상으로부터 사용된다

 

 4) AuraEnemy 클래스

 

 

 

AuraEnemy 클래스HighlightInterface 클래스를 상속받도록 코드 구조를 변경하고

오버라이드해야 하는 함수들을 추가한다

 

 

두개의 함수는 강조효과를 설정하고 강조효과를 해제하는 용도로 사용한다

몬스터의 메쉬와 무기의 메쉬에서 강조효과가 설정되고 해제된다

 

5) AAuraPlayerController 클래스

 

매 프레임마다 마우스 커서의 동작을 판단해야 하므로 PlayerTick 함수를 추가한다

 

 

CursorTrace 함수 마우스 커서가 가리킨 대상을 판단한다

판단 결과에 따라 HighlightActor 함수 또는, UnHighlightActor 함수를 호출한다

 

프로퍼티 LastActor지난 프레임에 커서가 가리킨 대상을 의미하고

프로퍼티 ThisActor현재 프레임에 커서가 가리킨 대상을 의미한다

CursorHit커서로부터 Trace하여 캡쳐한 대상을 의미한다

 

 

PlayerTick 함수에서는 CursorTrace 함수를 호출하여 프레임마다 마우스 커서가 가리키는 대상을 판단한다

 

 

CursorTrace 함수에서는 마우스 커서의 Trace 결과를 가져와이후의 로직에서 사용한다

 

우선 현재 프레임에 가리킨 대상의 값으로 지난 프레임에 가리킨 대상을 설정한다

이후 현재 프레임에 가리킨 대상이 유효하고, HighlightInterface를 상속받았다강조 효과를 준다

그렇지 않은 경우, 현재 프레임에 가리킨 대상을 강조하는 것은 불필요하므로 nullptr로 설정한다 

 

이후 지난 프레임에 가리킨 대상현재 프레임이 가리키는 대상과 다르다면

지난 프레임에 가리킨 대상을 더는 가리키고 있지 않으므로 강조 효과를 끄고 

현재 프레임에 가리킨 대상강조 효과를 부여한다

 

 

HighlightActor 함수UnHighlightActor 함수HighlightInterface를 상속받은 대상에서 함수를 호출한다

이때 호출되는 2개의 함수BlueprintNative 속성으로 작성되었으므로

Execute_ 함수를 사용하여 블루 프린트 버전이 있다면 블루 프린트, 없다 C++ 버전으로 함수를 호출한다

 

6) 언리얼 에디터

 

 

강조 효과를 추가하기 위한 PostProcessVolume을 추가하고,

적용 범위를 무한대로 확장하기 위해 Infiite Extent로 설정한다

 

 

PostProcessVolume에 적용할 머티리얼을 설정하기 위해

Custom Depth-Stencil Pass를 Enabled with Stencil로 설정하였다

 

- 최종 실행 결과

 

728x90
반응형