티스토리 뷰
Highlight Enemies
적 캐릭터를 하이라이트하기 위해서는, 먼저 어떤 방식으로 적을 감지하고 하이라이트를 적용할 것인지 결정해야 한다.
본 프로젝트에서는 마우스 커서를 이용하여 대상을 감지하며, 매 Tick마다 하이라이트 대상을 판별한다.
또한 이전 대상과 현재 대상을 비교하여, 하이라이트를 활성화하거나 비활성화할 수 있도록 EnemyInterface를 구현한 액터를 저장하는 변수 두 개를 선언하였다.
이때 TScriptInterface<IEnemyInterface>로 선언하였는데, 이는 단순한 IEnemyInterface* 포인터와 달리 UObject 기반 인터페이스를 안전하게 다루기 위한 언리얼 전용의 템플릿 클래스이다.

GetHitReusltUnderCursor 함수를 통해 시야에 보이는 것을 기준으로 트레이스하여 결과값을 저장한다.
이때 FPS 헤드샷 판정과 같이 정밀한 복합체를 다룰 필요가 없기에, 단순 콜리전 기준으로 트레이스한다.

이후로 총 5가지 케이스에 대해서 조건문을 구현하였다.
가장 먼저 직전 액터와 현재 액터 모두 감지된 대상이 없는 경우다.
이때는 아무것도 할 필요가 없다.
2번째로 직전 액터는 없지만 이제 새로 생긴 경우이다.
이떄는 현재 액터만 하이라이트를 활성화한다.
3번째로 직전 액터가 있지만 현재 액터는 없는 경우다.
직전 액터를 가르키다가 허공 or 다른 액터를 가리키는 경우이기에 직전 액터의 하이라이트를 비활성화한다.
4번째로 직전 액터가 있지만 현재 새로운 액터를 가르키는 경우이다.
직전 액터를 비활성화하고, 현재액터를 활성화 해주면 된다.
5번째 마지막으로 직전 액터가 있지만, 또 직전 액터를 가리키는 경우이다.
이 경우 또한 아무것도 할 필요가 없다.
현재는 배우는 차원에서 알아보기 쉽도록 이렇게 작성했지만, 아무것도 안하는 공간과 같이 필요없는 부분은 지우고 깔끔하게 정리해도 상관없다.

이제 다시 적으로 돌아가서 언리얼 엔진 내에서 하이라이트 판별을 위한 변수와 각 함수 내용에 해당 변수를 하이라이트 여부에 맞게 구현해준다.


고블린 블루 프린트 클래스로 가서 하이라이트에 대한 변수를 가져온다.
그리고 Tick에 연결하여 실제 하이라이트 기능 대신 Draw Debug Sphere 기능을 통해 제대로 하이라이트 로직이 동작하는 지 체크해줄 것이다.


그리고 우리는 ECC_Visibility를 기준으로 트레이스를 하기에 Collision 세팅을 약간 바꿔주어야 한다.
프리셋을 Custom으로 바꾸고 Visibillity에 대해서 Block으로 바꿔주어야 트레이스가 제대로 동작한다.




'Unreal > Udemy 강의' 카테고리의 다른 글
| Gameplay Ability System - Top Down RPG / Section 3-1 (0) | 2026.03.07 |
|---|---|
| Gameplay Ability System - Top Down RPG / Section 2-12 (0) | 2026.03.06 |
| Gameplay Ability System - Top Down RPG / Section 2-10 (0) | 2026.03.04 |
| Gameplay Ability System - Top Down RPG / Section 2-9 (0) | 2026.03.04 |
| Gameplay Ability System - Top Down RPG / Section 2-8 (0) | 2026.03.03 |
