유니티 내위치에서 타겟으로 Y축 회전하기
public Quaternion FaceTarget(Vector3 target)
{
// 객체가 target을 바라보도록 하는 회전값
Quaternion targetRotation = Quaternion.LookRotation(target - transform.position);
// 현재 회전 각도 가져오기
Vector3 currentEulerAngels = transform.rotation.eulerAngles;
// y축 회전 보간
float yRotation = Mathf.LerpAngle(currentEulerAngels.y, targetRotation.eulerAngles.y, trunSpeed * Time.deltaTime);
return Quaternion.Euler(currentEulerAngels.x, yRotation, currentEulerAngels.z);
}
Quaternion targetRotation = Quaternion.LookRotation(target - transform.position);
target - transform.position은 목표 위치와 현재 객체의 위치 간의 방향 벡터를 계산합니다.
Quaternion.LookRotation은 이 방향 벡터를 기반으로 목표를 바라보는 회전을 생성합니다.
즉, targetRotation은 객체가 target을 바라보도록 하는 회전값입니다.
Vector3 currentEulerAngels = transform.rotation.eulerAngles;
transform.rotation은 현재 객체의 회전을 나타내는 Quaternion입니다.
eulerAngles는 이 회전을 오일러 각도로 변환하여 반환합니다.
오일러 각도는 일반적으로 (x, y, z) 축에 대한 회전을 나타냅니다.
float yRotation = Mathf.LerpAngle(currentEulerAngels.y, targetRotation.eulerAngles.y, trunSpeed * Time.deltaTime);
Mathf.LerpAngle는 두 각도 사이를 선형 보간하여 부드럽게 회전하도록 합니다.
currentEulerAngels.y는 현재 y축 회전 각도이고, targetRotation.eulerAngles.y는 목표 회전의 y축 각도입니다.
trunSpeed * Time.deltaTime은 보간의 비율을 결정합니다.
trunSpeed는 회전 속도를 조절하는 변수이며, Time.deltaTime을 곱함으로써 프레임 독립적인 회전을 보장합니다.
return Quaternion.Euler(currentEulerAngels.x, yRotation, currentEulerAngels.z);
마지막으로 x축과 z축의 회전은 현재 각도를 유지하고, y축 회전만 보간된 yRotation으로 업데이트합니다.
최종적으로 이 메서드는 목표를 향해 부드럽게 회전하는 Quaternion을 반환합니다.
유니티 유닛겹치기( Nav Mesh Agent ) (0) | 2025.02.22 |
---|---|
유니티 오브젝트 풀링 기초 (0) | 2025.01.28 |
유니티 유한상태기계 - FSM(Finite State Machine) 1 (0) | 2025.01.25 |
유니티 스킬 쿨타임 (0) | 2025.01.20 |
유니티 몬스터가 캐릭터한테 점프해서 도달하기 (0) | 2025.01.20 |