【總結】Unity動畫模塊


動畫模塊沒有太多好說的,更多是練習積累的經驗
 
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打斷?
 
當勾上時,可以選擇
Value Function
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
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM