//Angular Velocity
Quaternion previousRotation; //전 프레임의 로테이션 값
Vector3 angularVelocity; //각속도를 관리할 변수
//이 함수를 업데이트에서 굴려줍니다.
public Vector3 GetPedestrianAngularVelocity()
{
Quaternion deltaRotation = transform.rotation * Quaternion.Inverse(previousRotation);
previousRotation = transform.rotation;
deltaRotation.ToAngleAxis(out var angle, out var axis);
//각도에서 라디안으로 변환
angle *= Mathf.Deg2Rad;
angularVelocity = (1.0f / Time.deltaTime) * angle * axis;
//각속도 반환
return angularVelocity;
}
보통은 Rigidbody에서 Angular Velocity를 갖고 올 수도 있지만
Character Controller나 Rigidbody가 없는 오브젝트의 각속도를 구해야하는 경우가 있습니다.
사실 잘 없었는데... 하...
여튼 각속도가 필요하다니 뽑아줘야겠지요.
사실 각속도 원리에 대해선 구글링에 쳐보면 더 많이 나올거고 1초 동안 얼마나 많이 회전 했느냐가 관건인 식입니다.
'Unity > C# Script' 카테고리의 다른 글
유니티 C# Script에서 Null Conditional Operator (0) | 2020.08.04 |
---|---|
UnityEvent (0) | 2020.01.17 |
C#의 Static (0) | 2018.05.16 |