Unity-教程:為“原地就位”的人形動畫編寫根運動腳本
有時,動畫表現(xiàn)為“原地就位”,這意味著如果您將此動畫放入場景,它不會移動所依附的角色。換言之,該動畫沒有包含“根運動”。為此,我們可通過腳本修改根運動。為了將這一切融合到一起,請遵循以下步驟(注意,實現(xiàn)相同結果有很多不同方法,這只是一種方案)。
打開包含“原地就位”動畫的 FBX 文件的檢視面板,然后選擇?Animation?選項卡
確保?Muscle Definition?設置為要控制的 Avatar(假設此 Avatar 稱為?Dude_,并且已將其添加到?_Hierarchy 視圖__)。
從可用剪輯中選擇動畫剪輯
確保?Loop Pose?正確設置(旁邊的指示燈為綠色),并已選中?Loop Pose?的復選框

在動畫查看器中預覽動畫以確保動畫的開頭和結尾順利銜接,并且角色正在“原地就位”移動
在動畫剪輯上,創(chuàng)建曲線來控制角色的速度(可通過?Animation Import Inspector?Curves > +?添加曲線)
為該曲線提供有意義的名稱,例如“Runspeed”

新建?Animator Controller__(將其命名為?RootMotionController__)
將所需的動畫剪輯放入其中,此時應該會創(chuàng)建一個具有動畫名稱的狀態(tài)(例如 __Run__)
將參數(shù)添加到與曲線同名的控制器(在本示例中為“Runspeed”)

在?Hierarchy?中選擇角色?Dude__(其檢視面板應該已經(jīng)具有?Animator__ 組件)。
將?RootMotionController?拖到 Animator 的?Controller?屬性上
如果現(xiàn)在按 Play,應該會看到“Dude”在原地奔跑
最后,要控制運動,我們需要創(chuàng)建腳本 (RootMotionScript.cs) 來實現(xiàn)?OnAnimatorMove?回調:
應將 RootMotionScript.cs 連接到“Dude”對象。進行此操作時,Animator 組件將檢測到腳本有?OnAnimatorMove?函數(shù)并將?Apply Root Motion?屬性顯示為?Handled by Script