做一個簡單的總結。人物動畫的核心是狀態機的設置,配合腳本的參量,來實現各組動畫的轉換。當然,我現在也只會最簡單的動畫。
狀態機的設置有幾個坑需要記一下:
Apply Root Motion
:在Animator
中最好取消勾選,這個選項的意思是將動畫的角度變換應用到場景中,但這樣子會影響我們腳本的使用;- 狀態機設置添加
Make Transition
時,要把Has Exit Time
取消勾選,不然的話一個動畫沒完它是不會放你想要的動畫的。 - 參量設置需要腳本的配合,應用到
animator.SetXXX("參量名", 腳本參量名)
這個函數。
到現在,人物動畫最常用的有兩個參量:speed
和angle
。下面是配合設置的腳本。
Vector3 velocity = (m_transform.position - last_position) / Time.deltaTime;
localVelocity = m_transform.InverseTransformDirection(velocity);
localVelocity.y = 0;
speed = localVelocity.magnitude;
//angle = (HorizontalAngle(localVelocity) + 360.0f) % 360.0f;
last_position = m_transform.position;
m_animator.SetFloat("Speed", speed);
//m_animator.SetFloat("Angle", angle);
//Debug.Log("speed: " + speed);