관리 메뉴

기억을 위한 기록들

[UE4]액터간의 방향을 구해보자 (1) 본문

그래픽스(Graphics)/Game Math

[UE4]액터간의 방향을 구해보자 (1)

에드윈H 2019. 11. 10. 16:31

1. 개요

 

 

플레이어입장에서 적의 방향을 구해보자

 

방향 표시용 빨간 Arrow 등장

 

 

2. 함수 사용(Get Unir Direction Vector)

 

 

KismetMathLibrary.inl

GetSafeNormal() ? 그게 뭣이여 

 

 

Normal 을 구하는데 안전하게 구하기 위해 지어준 이름 같다

우선 SquareSum 에 두 액터의 위치를 뺀(To - From)  방향(A)의 제곱근의 합을 구한다.

 

//주석 번역 하지면 " // 그 안에 허용오차를 추가하는 것이 안전한지 확실하지 않다. 오류가 너무 많을 수 있음"

오류가 있을 수 있다는 안내 코멘트 를 해둔 것 같다

 

제곱근의 합들의 역제곱근한 Scale을 구한뒤,

A에 Scale을 곱해준 뒤 리턴해준다.

 

나온 벡터 A값을 RotationFromXVector (관련설명은 길어질것 같으니 나중에 다시 다루기로 하자 )를 이용하면

캐릭터에 달린 화살표가 적을 향해 돌아간다.

 

 

2. 함수 내부 구현 

똑같 GetSafeNormal 함수로 정리 하였다. 내부를 살펴보면

 

InvSqrt는 1을 제곱근으로 나누어 줘서 구했다.
결과는 동일하다!

 

 

더 간단한 방법! Normalize 내부도 결국엔  GetSafeNormal이다.

 

 

차이점

GetUnitDirectionVector 함수에서 입력값은 From과 To로 입력받고 

위치를 빼서 Normalize할때는 빼는 순서가 중요하다. (적 - 플레이어)