본문 바로가기

게임프로그래밍/실습2

[실습2] 8. 에너미 하이라이트 하기

1. 베이스 에너미 블루프린트 클래스 만들기

 

에너미는 에너미끼리 공통되는 속성들이 있고 그렇기에 베이스 클래스가 있으면 좋다. 베이스 에너미 블루프린트 클래스를 만들자.

 

에너미 베이스 블루프린트 클래스를 만들고 각각의 에너미 클래스로 가서 부모 클래스를 바꿔주면 된다.


2. 포스트 프로세스 볼륨 배치

 

하이라이트 기능은 포스트 프로세스를 이용해 할 것이다. 포스트 프로세스는 본래 광원 등 환경의 후처리를 위해 사용하는 것이라고 한다.

 

 

플레이스 액터에서 포스트 프로세스 볼륨을 찾아 배치한다.

 

아무대나 배치한 뒤 인피니트 익스텐트에 체크를 하여 무한한 공간에 영향을 미치게 한다.

 

하이라이트를 하기 위해 커스텀 스텐실 뎁스를 사용할 것인데 이를 위해서는 프로젝트 세팅에 들어가야 한다.

 

 

Custom Depth-Stencil Pass 설정을 위와 같이 바꿔주어야 한다.

 

이제 포스트 프로세스 볼륨으로 돌아가 디테일 패널에서 포스트 프로세스 머테리얼을 추가해준다.

 

 

이제 이렇게 설정하면 어떤 매시든지 스텐실 뎁스를 포스트 프로세스 머테리얼과 같은 (여기서는 250) 뎁스로 설정하면 해당 효과가 발휘하게 되는 것이라고 한다.

 

그러면 이제 하이라이트 하는 방법이 명확해진다. 하이라이트 함수에서 스텐실 뎁스의 값을 바꿔주면 될 것이다.


3. 하이라이트 함수 구현하기

 

IDE로 들어가자. 하이라이트와 언하이라이트 함수를 구현할 것이다.

 

void AAuraEnemy::HighlightActor()
{
    GetMesh()->SetRenderCustomDepth(true);
    GetMesh()->SetCustomDepthStencilValue(CUSTOM_DEPTH_RED);

    Weapon->SetRenderCustomDepth(true);
    Weapon->SetCustomDepthStencilValue(CUSTOM_DEPTH_RED);
}

void AAuraEnemy::UnHighlightActor()
{
    GetMesh()->SetRenderCustomDepth(false);
    Weapon->SetRenderCustomDepth(false);
}

 

여기서 CUSTOM_DEPTH_RED 는 그냥 정수 250을 매크로로 표현한 것이다.

 

 

하이라이트가 잘 되는 것을 볼 수 있다.