본문 바로가기
게임 공부/Unreal Engine

적을 향하도록 회전하는 방법(로직)에 대해 간단하게 알아보자

by woohyeon 2021. 11. 29.
반응형

내 캐릭터와 다른 캐릭터가 있을 때 내 캐릭터가 상대를 향하도록 회전하는 로직에 대해..

아래와 같은 상황이다.  A의 위치는 P1, B의 위치는 P2일 때, A가 B를 향해 회전하는 로직에 대해 생각해보자

 

우선 A는 Forward 방향을 보고 있다. 그리고 P1, P2의 위치를 가지고 만든 벡터를 P1P2라 하고, Forward와 P1P2가 이루는 각을 Θ라고 한다면, 우리는 Forward 벡터를 특정 방향(양의 각 or 음의 각)으로 Θ만큼 회전하면 된다.

여기서 Θ는 ForwardP1P2내적을 통해 쉽게 구할 수 있다. 내적은 두 벡터의 크기와 cosΘ를 곱한 값이므로 두 벡터는 크기가 1인 단위 벡터여야 한다. P1P2는 P2에서 P1을 뺀 뒤, 정규화를 통해 만들 수 있다. 여기서 구한 cosΘ 값을 cos의 역함수인 arccos에 넣으면 각도를 반환한다. 여기선 정확한 구현이 아니라 원리를 이해하는 것이 목표이므로 각도 표현 방법이 radian인지 degree인지는 중요치 않다.

그러면 각도는 구했고 이제 양의 방향으로 회전할지 음의 방향으로 회전할지를 구해야 한다. 이는 외적을 이용한다. 두 단위 벡터의 외적의 결과가 양수라면 양의 방향으로 음의 방향이라면 음의 방향으로 회전해주면 된다.

결과적으로 forward 벡터를 양 or 음의 방향으로 Θ만큼 회전시키면 된다.




댓글