반응형
[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 함수는 아래와 같이 구성되어 있다.
반응형
'Unreal > Manual' 카테고리의 다른 글
Unreal 플레이어를 바라보는 방향으로 적 회전 (0) | 2024.01.14 |
---|---|
Unreal FireBall 만들기 (0) | 2024.01.12 |
Unreal Mesh Socket 위치에서 SpawnActorDeferred 하기 (0) | 2024.01.12 |
Unreal Particle Object 가져오기 (0) | 2024.01.11 |
Unreal Collider On/Off 충돌체 켜고 끄기 (0) | 2024.01.11 |