시작하며
게임을 개발하다보면 특정 방향을 기준으로 회전된 벡터값을 구하거나 두 개의 방향벡터 사이의 각을 구해야 할 경우가 있다. 예제 코드를 기록하여 기억해 두고자 한다.
예시
캐릭터가 바라보는 방향을 기준으로 Z축 기준 +-30 각도의 방향 벡터를 구해보자.
코드
//회전된 방향 계산
FVector Forward = GetActorForwardVector();
Forward.Normalize();
FVector LeftDirection = Forward.RotateAngleAxis(-30.0f, FVector::UpVector);
FVector RightDirection = Forward.RotateAngleAxis(30.0f, FVector::UpVector);
//두 벡터 사이의 각도
float Dot = FVector::DotProduct(Forward, LeftDirection);
float AcosAngle = FMath::Acos(dot);
float AngleDegree = FMath::RadiansToDegrees(AcosAngle);
// AngleDegree = 30.0f
요약
- 벡터를 회전하고자 할때 회전할 축을 알고 있다면 RotateAngleAxis 함수로 회전 벡터를 구할 수 있다.
- 두 벡터 사이의 각도를 구할땐 DotProduct를 한 값을 아크 코사인 하여 FMath::RadianToDegrees 함수로 각도를 구할 수 있다
반응형