1. 程式人生 > >【總結】Unity動畫模塊

【總結】Unity動畫模塊

作用 inf 數據 err size rotation current 程序 相互

動畫模塊沒有太多好說的,更多是練習積累的經驗 Animator動畫控制器
  • AnimatorControllerLayer 狀態層,layer層級越高,動作優先級越高
  • AnimatorStateMachine 狀態機
  • SubAnimatorStateMachine 子狀態機
RuntimeAnimatorController 運行時動畫狀態機 Animate Physics 適合動畫有物理的相互作用 ApplyRootMotion 用動畫還是腳本控制位置 Culling Mode 動畫裁剪 Write Default 將動畫改變的數據結束動畫後復原 Transition 技術分享圖片 技術分享圖片
  • Transition Offset
    部分的next State是不會執行的
  • Duration 部分是兩個動畫的混合。fixed duration 打鉤的話 duration會以秒計算,而不是根據state的長度
  • order interrupt 是否只能被高優先級的transition打斷?
當勾上時,可以選擇
ValueFunction
None 這個transition不會被打斷
Current State 目前State的其他transition如果達成條件,會打斷目前的transition
Next State 下一個State的其他transition如果達成條件,會打斷目前的transition
Current State then Next State 都可以打斷,只是由Current State優先
Next State then Current State 都可以打斷,只是由Next State優先
意思就是說,勾選後,更高優先級的Transition可以打斷當前這個Transition,比如我們要用AnyState到Hurt狀態,如果此時正在發生其他狀態間的Transition,那麽設置None的話就只能等這個Transition結束才能切換到Hurt了。但是用其他選項就可以打斷 可以用打斷實現一些比較特殊的動畫,比如硬直結束後可操作的攻擊動畫 Solo 和 Mute 的功能 不用變量控制的狀態轉移
  • Mute:禁用狀態轉移(啞掉transition);
  • 如果不選擇solo,在沒有變量控制(結束條件為“exit time”)的情況下,該狀態優先選擇動作列表中最前(或者說最上的)的狀態轉移;
  • 如果選擇了某個solo,那麽在沒有變量控制(結束條件為“exit time”)的情況下,優先選擇標記solo的狀態轉移;
  • 如果有多個狀態轉移選中了solo,那麽優先選擇這些已選中solo的狀態轉移中,在動作列表中靠前的狀態轉移;
基本的原則是,如果一個狀態被標記為solo,那麽其余的狀態轉移將被視為選中mute; 如果solo和mute同時被選中,那麽mute的優先級更高(即視為只選中了mute) 連擊的Transiton 問題目標:如combo1,至少播放0.6倍的動畫,然後如果有輸入就轉換狀態 判斷輸入的時間必須要小於exit time,有exitTime時transition的判斷發生在exit time結束時,過了exit time就不進行condition判斷了 Dawnblade中不用exit time,而是交給程序控制,何時可接受輸入並切換 Blend Tree 動畫混合樹 1D就是一個參數混合多個動畫 2D就是兩個參數混合多個動畫,一個XY空間中,點距哪個動畫近就受其影響大 其他 AnimatorStateInfo Animator.StringToHash Animation幀動畫 AnimationCurve AnimationEvent IK:正向運動學,根骨骼帶動子節點骨骼運動 FK:反向運動學,由子節點帶動父節點運動。 在Animator窗口中,對於要使用IK的動畫狀態勾上Foot IK選項,在Base Layer中勾上IK Pass選項。然後在代碼中實現OnAnimatorIK函數來控制IK Animator.SetIKPosition SetIKRotation SetIKPositionWeight SetIKHintPosition SetLookAtWeight …… 動畫重定向 同一套Avatar骨骼的不同角色,動畫絕對可以重用 動態控制動畫幀事件 可以用Animator.animationClips獲取,然後設置AnimationEvent觸發time,functionName AnimatorOverrideController 運行時修改掛載的clip

【總結】Unity動畫模塊