본문 바로가기
Unity/C# Script

GameObject의 각속도 구하기

by Pretty Garbage 2020. 8. 5.
	//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