





(引自:http://tieba.baidu.com/p/4323644080)
然后詳細看了下這個文檔:http://docs.unity3d.com/Manual/RootMotion.html
現在基本上明白了,下面記幾個要點:
1,在3dmax里建模的時候必須包含一個根骨骼,所有的位移動畫必須做在根骨骼上。
2,unity中進入fbx的Import Setting,選Animations屬性頁,創建Clips。
3,進入fbx的Import Settings,選里面的Rig屬性頁,為其中Root node選擇根骨骼。
3,此時再重新進入Animations屬性頁,就可以看到每個clip的面板里都出現了Root Transform Rotation,Root Transform Position(Y),Root Transform (XZ)這些選項了。
4,接下來把fbx拖到場景里,在其Animator組件中把Apply Root Motion選上。
5,當然,還有為Animator組件的Controller添加Animation Controller及創建狀態機節點之類的一些瑣事,這里就不提了。
這樣,動畫在切換時就可以累積位移(而非復位)了。
關於Root Transform的說明:
1,Root Transform是物體質心在一個水平平面上的投影,至於此水平平面是哪個平面,取決於Based Upon的設置。
Root Transform可以直觀地在clip面板下方的預覽窗口中看到:

那個圓圈就是Root Transform的位置。
預覽窗口中默認放的不是我們自己的fbx模型,而是這個小人兒,我們需要把自己的fbx模型拖到預覽窗口中。
2,Bake Into Pose的理解:
可以理解為Root Transform是模型的根節點,而Pose是Root Transform的子節點。
如果我們不勾選Bake Into Pose,則Root Transform運動帶動子節點Pose運動。
如果我們勾選了Bake Into Pose,則Root Transform中的動畫將被轉移到Pose中去,這樣Root Transform就靜止不動了,而只有Pose運動。
兩者看上去動畫效果一樣,區別就在於Root Transform動與不動。
什么情況下需要Bake Into Pose,什么情況下不需要Bake Into Pose呢?
由於我們勾選了Apply Root Motion,所以Root Transform進入累積模式,切動畫時下一個動畫會在上一個動畫結尾時Root Transform的位置開始播放(而不復位)。
但有時候我們會有這樣的需求:希望切動畫時,在XZ平面上位移累積,但在Y方向上位移不累積(復位)。
如果所有的Bake Into Pose都不勾選,則我們現在的效果是: 切動畫時,XZ平面上和Y方向上位移都累積。
現在,只要將Root Transform Position(Y)的Bake Into Pose勾選,就能取消Y方向上的累積了。
原理很明顯,因為Y方向上Root Transform不動了,所以定不會在Y方向上產生累積位移。
