接觸Unity以來就已經有了Animator,Animation用的少,不過也大概理解他倆之間的一個區別於聯系。
圖中其實就是Animator和Animation之間的區別於聯系了,啊!你肯定會告訴我這就不是Animator么。
對啊,Animator其實是由Animation組成的。比如在Animator沒有出現的時候有些公司寫的動畫狀態機其實就是代碼版的Animator。
Animator其實就是把Animation統一管理和邏輯狀態管理的組件,而Animation就是每一個動畫。
動畫狀態機推薦游客學院的一篇教程。
Animator給了我們更方便的圖形化狀態管理。但是你想不寫代碼,還是不行。
但是代碼會方便許多,用一個腳本就可以管理整個Animator狀態機了~
其實也是角色執行的邏輯狀態機~
using UnityEngine; using System.Collections; public class AnimatorMove : MonoBehaviour { public float DirectionDampTime = .25f; private Animator animator; void Start () { animator = GetComponent<Animator>(); } void Update () { if (animator == null) return; AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0); if (stateInfo.IsName("Base Layer.Run")) { if (Input.GetButton("Fire1")) animator.SetBool("Jump", true); } else animator.SetBool("Jump", false); if (Input.GetButtonDown("Fire2") && animator.layerCount >= 2) animator.SetBool("Hi", true); else animator.SetBool("Hi", false); float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); animator.SetFloat("Speed", h * h + v * v); animator.SetFloat("Direction", h, DirectionDampTime, Time.deltaTime); } }
這是一段比較簡單的人物控制腳本,能控制人物的跑跳和打招呼。
其實就是控制一下過度的條件經過什么的操作是否允許過度。
通過上述的條件來控制動畫的過度,那何為動畫過度(Transition)呢?
這就是簡單的動畫過度控制,在Animator中能比較方便直觀的修改。Transition就是所謂的過度
Settings就能調整過度的時間和銜接。
Conditions就是所謂的過度條件。
注意:如果一個動畫有Conditions建議取消Has Exit Time,會出現無法及時觸發的問題。
Has Exit Time就是必須過度的時間,處於這個時間時,是不允許任何對動畫的操作的。
以上都是比較基礎的Animator操作,后續會寫一些關於IK。Blend Tree。二維混合樹。同步動畫層。多通道IK。等知識。