unity animator動畫融合時的上下半身速度分離控制
阿新 • • 發佈:2018-11-03
遊戲中要實現一邊走一邊攻擊, 移動還分八方向的,所以使用了半身混合。
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);