可以透過這個網站下載動畫
並使用 https://terribilisstudio.fr/?section=MC#closearrow-up-right 將動畫轉換成 Unreal 可以使用的格式
在這邊遇到一個問題是 Mixamo 的動畫是不包含根運動
所以在使用有位移的動畫時 角色會做完動畫後移回原點
如果啟用根運動則會導致角色在原地作動畫不移動
所以利用 曲線位移功能添加移動
曲線決定了位移的「節奏感」(是先快後慢,還是勻速)。
在 Content Browser 點擊右鍵 -> Miscellaneous -> Curve。
選擇 CurveFloat,命名為 C_BackDash。
C_BackDash
雙擊打開,新增兩個關鍵幀:
點 A:時間 (Time) = 0.0, 數值 (Value) = 0.0。
0.0
點 B:時間 (Time) = 0.5 (假設動畫長度為 0.5 秒), 數值 (Value) = -300.0 (代表向後移動 300 單位)。
0.5
-300.0
調整斜率:選中這兩個點,按右鍵選擇 Auto。這會產生一條 S 型曲線,讓位移有啟動感和煞車感,視覺上更自然。
回到你的角色藍圖(Character Blueprint),在觸發後跳的地點編寫邏輯:
添加 Timeline:右鍵搜尋 Add Timeline,命名為 BackDashTimeline。
Add Timeline
BackDashTimeline
配置 Timeline:
雙擊打開 Timeline,點擊左上角的 f+ 按鈕。
在 External Curve 欄位選入剛才建立的 C_BackDash。
將 Length 設定為與動畫一致的長度(例如 0.5)。
連接節點:
Play from Start:連接到你的 Play Montage 執行線。
Play Montage
Update (關鍵點):這是 Timeline 運作的核心,它每一幀都會執行一次。
你需要把曲線輸出的「數值」轉換成「世界座標空間的移動」。
從 Timeline 的輸出(剛才建立的曲線名稱)拉出一條線。
使用 Add Actor World Offset 節點:
Add Actor World Offset
Target:連接 Self。
Self
Delta Location:
獲取角色的前方向量:Get Actor Forward Vector。
Get Actor Forward Vector
將向量乘以曲線輸出的數值(使用 Vector * Float 節點)。
Vector * Float
這會得到一個指向角色後方的向量。
Sweep (重要):一定要勾選! 勾選後,如果你後跳撞到牆壁,角色會停下來而不會穿進牆裡。
Teleport:不勾選(除非你不想要物理模擬)。
最後完成是這個樣子
一直接收 update 去調整位置 解決動畫不能移動的問題
Last updated 1 month ago