캐릭터 Forward 기준에서 타겟 위치가 몇도에 있는지 알려주는 코드다.

아래 사진을 보면 이해가 빠르다.

왼쪽은 음수, 오른쪽은 양수, 플레이어 Forward 기준으로 각도를 알려줌.

float CalcForwardToTargetDegree(FVector TargetLocation)
 {
     FVector OwnerLocation = OwnerCharacter->GetActorLocation();
     //타겟을 향하는 벡터 계산
     FVector ToTargetVec = (TargetLocation-OwnerLocation); 
     //Z 축을 소거함 (추후 따로 구하기 위해)
     ToTargetVec*= FVector(1.f, 1.f, 0.f);
     //정규화 
     ToTargetVec.Normalize(); 
     
     //캐릭터 기준 Forward Vector 
     FVector OwnerForwardVec = OwnerCharacter->GetActorForwardVector(); 
     
     //각도를 찾기 위해 내적 (결과는 cos 세타) 
     float InnerProduct = FVector::DotProduct(OwnerForwardVec,ToTargetVec); 
     
     //Arc Cosine (결과는 Unsigned Degree) 
     float TargetDegree = UKismetMathLibrary::DegAcos(InnerProduct); 
     
     //부호를 찾기 위해 외적 
     FVector OutterProduct = FVector::CrossProduct(OwnerForwardVec,ToTargetVec);
     
     //Yaw 기준 부호 감별을 위해 Z 부호를 가져옴 
     float DegSign = UKismetMathLibrary::SignOfFloat(OutterProduct.Z); 
     
     //최종 결과로 각도에 부호를 곱해 왼쪽인지 오른쪽인지를 포함해 -180 ~ 180 도의 각도를 가져옴 
     float Result = TargetDegree*DegSign; return Result;
 }