1. 程式人生 > >unity animator動畫融合時的上下半身速度分離控制

unity animator動畫融合時的上下半身速度分離控制



遊戲中要實現一邊走一邊攻擊, 移動還分八方向的,所以使用了半身混合。
Animator 半身混合的處理,可以另外看資料。  
簡單來說 就是分2層:0層 播放基礎移動動作,比如“Run”, 1層設了Mask(配置了上半身節點),weight設1(會完全覆蓋0層的上半身動作),播放"Attack"

就能滿足要求了。


不過,策劃又有需求,需要玩家移動快時, 腳走路的動畫要變快, 但上半身攻擊不能變快。

結果Animator 只有一個speed屬性, 會影響所有當前動畫。

找了一下資料,參考如下連結,有好幾種方案,作者幫忙踩過坑了,我就選擇最後一種方案。

http://blog.sina.com.cn/s/blog_13c4bf4b40102wup6.html


就是裡用Animator 可以定義一些自定義引數(Parameters子頁籤), 控制動畫的播放


上圖左側,可以看到動畫的播放速度除了可以固定一個值外,還可配置Multiplier 乘以一個自定義係數。

這樣,我們就不用在程式裡一個動畫一個動畫調速度了,直接整個animator 設一次引數就行。
animator.SetFloat("USpeed", value);     
然後把9個移動的動作都做了一下配置。

就基本滿足要求了。



不過個人也遇到了一個坑:

Animator所在節點如果 禁用又被啟用時(比如怪物遠離隱藏,後面又顯示), 引數就被重置了。(Animitor主控切換引數當然也會被重置)
所以我在該節點掛的腳本里OnEnable函式裡 每次都設一下 animator.SetFloat("USpeed", value);