首先是思路
Foot Placement 其實就是通過IK動畫調整骨骼把遊戲角色的雙腳固定在地面上,確保角色在斜坡或者凹凸的地形上時可以正確的將腳放
置在其表面上 :
文檔鏈接 : https://docs.unrealengine.com/en-US/Engine/Animation/IKSetups/index.html
你可以在 Content Examples 項目裏找到上面文檔裏的例子
虛幻的一篇官方文檔介紹了一些關於 Foot IK 的內容,不過並不是 “step-by-step” 的教程,只是一個概述,思路很簡單,就是通過射線斷角色雙腳到地面的距離計算出一個 偏移量(offset) ,然後根據這個 偏移量 來移動骨骼 調整雙腳上下的位置來貼近地面. 但是你只能通過關閉物理碰撞或是隻檢測射線來看到效果,而且如果角色雙腳到地面的距離大於最大距離的時候(骨骼的長度)整個角色就會顯得非常不自然,所以我們還需要控制整個身體的偏移讓人物的腳可以到達地面,而且通過移動整個身體我們也不需要擔心碰撞的問題了.
下面是用藍圖實現的具體過程.
實現
-
Setup Animation Blueprint
我們首先設置動畫藍圖,
用 Two Bone Ik 節點控制兩個腳部骨骼的偏移:
用 Transomform Bone 節點來控制身體( root bone )的偏移:
設置完成後可以自行調整查看效果,之後在角色藍圖裏計算出 偏移量 後給再這三個 Offset 賦值.
-
定義 Tracing Function ( Foot Trace )
紅色線段的長度是我們要求的值,Trace Distance、Trace Hit 和 Trace End 都是已知的.藍圖實現:
這裏的 ActorLocation 就是 CapsuleComponent 的中心點的位置,從 CapsuleComponent 的中心向下發射一條射線,長度是 CapsuleHalfHeight + TraceDistance,然後求出 Out Hit Trace End ( Trace End ) 與Out Hit Location ( Trace Hit ) 的距離再減去 TraceDistance 後我們就得到了需要return的 Foot Offset.