人物第一步踏出去的動作, 是給玩家的第一印象, 要令玩家覺得人物有自己的性格, 這部分要處理得很仔細(廢話)
在程序上的難度
如何界定當下的移動需要播放有個性的動畫 – 步調
目前想到的方法, 如果人物已經靜止.
- 決定中斷狀態 Idle
- 取下一個輸入方向, 作角度運算(與模型前方)
- 把角度資料 Mapping 到需要 crossfade 的動畫state.缺點, 是必須等待玩家停止一下方向輸入 >= 1 frame
另一個方式是不用等待 Idle
- 紀錄玩家的移動 vector, 用 Vector3.Lerp 作一個特定的時間緩衝 e.g. 3sec
- 設定一個特殊角度值, 如果玩家當下的輸入與 (1) 的角度超出時以該角度進行判斷
- 播放相關的動畫.
缺點, 是角度有偏差
Animator 設定
由於這層Graph 的接入點由程序直接呼叫 CrossFade() API, 所以無需任何連接線. 只需要決定如何 Blend out 即可.
圖中有多重 Blending 的原因是考慮到位移有機會在世界中 “踏空”
所以當人物失足時需要立即中止及回到 Air state.
話說這顆衛星佈陣式的 blending transition 要設定真的很累人.
碎碎唸
當初這部分卡了幾天, 一直糾結在如何用 Animator 的 Blending 來達成這效果, 結果其實只需要用程序來解決 CrossFade() 即可.
算是提醒自己有點殭化的思維, 別硬是鑽研 Animator 的 Editor UI 自找煩惱.
Pingback: 第一步踏出去要有個性 ver 2.0 – Clonefactor
更新 Ver2. 沒有需要使用 Crossfade
https://www.clonefactor.com/wordpress/public/2338/