Unreal Engine/기능 구현 / / 2025. 8. 25. 15:56

[Unreal Engine 5] 마우스로 액터 호버링

반응형

마우스로 특정 액터에 가져다대면 특정 효과를 주는 로직을 구현한다고 생각해보자.

 

가령 게임에서 NPC에 마우스를 호버링하면 NPC에 초록색 외곽선이 생기는 게임들이 있다.

이러한 기능을 언리얼에서 구현한다면 어떻게 해야 할까?

 

기본 전제를 깔고 생각해야한다.

"마우스도 충돌체, 액터도 충돌체"

 

마우스와 액터가 충돌하면 이벤트를 발생시킨다.

 

이렇게 생각하고 로직을 짜면 된다.

언리얼에서 GetHitResultUnderCursor() 함수를 지원한다.

마우스와 충돌한 액터를 FHitResult에 넣어서 반환해준다.

 

이 때, 트레이스 채널을 Visiblility로 설정했으므로, 반드시 충돌 체크를 할 액터의 콜리전 프리셋에 트레이스 채널이 Visiblilty를 무시(ignore)해서는 안된다.

 

확인하기 위해서 마우스 호버링 여부를 확인하기 위해 대상 클래스의 bool 값을 추가한다.

 

 

PlayerController에서 호버링에 따른 로직을 구현한다.

LastActor와 ThisActor를 구분하여 액터를 가리키는 경우의 수를 생각해보자.

 

case A : LastActor와 ThisActor 모두 nullptr인 경우, 아무런 동작도 하지 않는다.

case B : ThisActor만 존재하는 경우, 최초로 마우스와 충돌했으므로 ThisActor의 동작을 켠다.

case C : LastActor가 존재하고 ThisActor는 nullptr인 경우, 바로 직전까지는 호버링 됐다가 허공으로 마우스가 이동했으므로 동작을 끈다.

case D : LastActor와 ThisActor가 서로 다르다면, LastActor의 동작은 끄고 ThisActor의 동작을 켠다.

case E : LastActor와 ThisActor가 서로 같다면, ThisActor의 동작이 켜진 상태이므로 아무것도 하지 않는다.

 

C++에서 타겟 클래스의 Tick에서 DrawDebugSphere 함수로 테스트하는 방법도 있고, 블루프린트에서 노드를 연결해서 테스트하는 방법이 있다. 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유