본문 바로가기
Unreal/Manual

Unreal 적이나 목적지의 방향 구하기

by Dev_카페인 2024. 1. 12.
반응형

[Unreal/C++] 적이나 목적지의 방향 구하기

 

언리얼 엔진에서 A에서 B로 향하는 방향을 알고 싶을 때 사용한다.

원거리 무기같은 투사체에 적용하기 좋다.

A위치에서 B로 향하는 방향을 알고싶을 때에는

B 위치에서 A위치를 빼고 정규화를 해주면 된다.

 

언리얼에서 Actor의 위치를 가져오는 함수는 GetActorLocation() 이다.

나의 경우는 Mesh에 Socket을 붙여놔서 소켓의 위치를 구해야하기 때문에 GetSocketLocation()도 사용했다.

GetMesh()->GetSocketLocation("SocketName");

 

아래와 같이 B위치에서 A위치를 뺀 Normal Vector를 구하면 -1~1까지의 방향으로 정규화된다.

FVector ALocation = GetMesh()->GetSocketLocation("SocketName");
FVector BLocation = targetActor->GetActorLocation()
FVector direction = (BLocation - ALocation).GetSafeNormal();

 

위 코드는 사실 언리얼 엔진에서 미리 정의를 해놓았다.

FVector direction = UKismetMathLibrary::GetDirectionUnitVector(ALocation, BLocation);

위 함수를 사용하려면 #include "Kismet/KismetMathLibrary.h" 헤더 추가가 필요하다.

 

사실상 함수로 만들어진 것을 제외하면 코드는 똑같다.

 

GetSafeNormal 함수는 아래와 같이 구성되어 있다.

반응형