공부 기록

[Unity] kinematic 물체의 속도 측정 본문

Unity

[Unity] kinematic 물체의 속도 측정

혜멘 2021. 5. 13. 02:39

오늘 해 볼 것은 Kinematic 물체의 속도를 측정하는 방법이다.

 

유니티에서는 Rigidbody 컴포넌트를 적용하면 자체적으로 속도를 측정해주지만 isKinematic 설정을 활성화한 물체는 물리연산이 적용되지 않아 속도를 직접 구해야 한다. 속도공식 (V=S/T) 을 이용하여 코드로 속도를 측정해보았다.

 

    private Vector3 oldPosition;
    private Vector3 currentPosition;
    private double velocity;
    
    void Start()
    {
        oldPosition = transform.position;
    }

    void Update()
    {
        currentPosition = transform.position;
        var dis = (currentPosition - oldPosition);
        var distance = Math.Sqrt(Math.Pow(dis.x,2)+Math.Pow(dis.y,2)+Math.Pow(dis.z,2));
        velocity = distance / Time.deltaTime;
        oldPosition = currentPosition;        
    }

 

유니티는 프레임 단위로 Update 함수가 호출되므로 S는 물체의 이전 프레임 위치와 현재 프레임 위치 사이의 거리, T는 프레임 단위 시간인 deltaTime으로 설정하고 계산해주었다. 나는 3D작업을 하고있어서 z축 포지션 값까지 고려했는데 2D라면 x,y축 값만 계산하면 될 듯 하다.

 

 

 

 

Comments