動畫控制器

現在向您介紹Craftland Studio PC 全新的動畫控制器系統。

功能介紹

Craftland Studio PC的動畫控制器現在支援:

  1. 預覽動畫
  2. 以軌道形式管理動畫片段的播放、銜接
  3. 以狀態管理成組的動畫片段
  4. 拆分骨骼部位,因此只播放動畫片段中的部分骨骼動畫
  5. 新增關鍵影格並在關鍵影格廣播事件進而實現腳本邏輯。

資源準備

要使用動畫控制器,您需要準備:

  1. 一個模型
  2. 與模型相符的動作資源

image-20250821150239191

編輯器已經內建了FreeFire的角色和對應的動作:

image-20250821150636553

image-20250821150721434

入口

要使用動畫控制器,需要建立一個Animation Controller檔案:

image-20250821153246045

雙擊開啟新建的動畫控制器文件,就可以開啟動畫的編輯介面:

image-20250821153401651

使用模型

點選模型列或把模型拖入即可預覽要播放動畫的模型。

image-20250821154505261

如果模型帶有Appearance組件,並且有合適的骨架和外觀,預覽視窗就會顯示這個模型。您可以透過滾輪放大或縮小攝影機、使用滑鼠中鍵拖曳鏡頭、或按住滑鼠右鍵旋轉攝影機——就像在場景編輯器裡一樣。

image-20250821155656866

image-20250821154710020

如果要使用FreeFire預設人物或寵物外觀,可以在工程目錄Library/FFUMA下尋找合適的外觀,選擇器中也會顯示這些外觀。

image-20250825102329060

新增動畫片段

從project拖曳動畫到軌道上,就可以加入一段動畫片段。如果不知道工程有哪些動畫,使用新增動畫功能可以瀏覽所有動畫。不過,您總是需要自行保證動畫與模型的匹配。通常來說,不適配的動畫不會播放,不過有時候動畫會表現得很奇怪:例如模型的某些部位被異常地拉長或壓縮。

image-20250821173417294

image-20250821173434033

image-20250821173458028

image-20250821173511604

動畫片段設定

在Project中只能查看動畫片段訊息,但是動畫拖入軌道之後,就可以在inspector面板進行在當前軌道的參數編輯。

image-20250825102727878

image-20250821175211907

  • 片段:這個片段使用的是什麼動畫,可以手動更改動畫片段。

  • 播放速度:動畫播放的速度,1為預設速度。

  • 循環模式:拉長動畫片段*後,在延長部分的循環方式

    • 維持:維持在最後一格的動作姿勢
    • 循環:在延長部分循環播放動畫片段
    • 永遠循環:在動畫片段之後持續循環該片段,並且會使之後的片段都失效
    • 無:不做處理,硬切回預設姿態
  • 向後外推:目前片段結束後、下一個片段開始前如何處理

    • 無:不做處理,硬切回預設姿態
    • 維持:維持在最後一格的動作姿勢
    • 循環:在兩個片段之間的部分循環播放動畫片段
    • 向後外推設定為維持或循環,可以在片段尾部直觀地看到:image-20250825103745027image-20250825103653150
  • 混合淡入長度:切換到這個動畫片段時,過渡動畫的時間

    • 在混合淡入時長這段時間裡,動畫系統會自動減少上一個動畫的權重,並增加這個動畫片段的權重,直到淡入時間結束。

      • 淡入時間結束時完全地播放這個動畫片段
      • 如果將這個參數設為0,那麼切換將會立刻發生,這看起來也許比較奇怪,但是有時需要立刻做出反應動作時也會採取硬切的方式,例如開槍和閃避。
    • 當軌道中存在A動畫向B動畫過渡時,B動畫的混合淡入時長會根據軌道上兩個片段的重合長度自動設定:

      • image-20250825105117055
    • 即使在軌道上沒有動畫片段的直接銜接,在實際使用動畫控制器時,也會存在「切換到這個動畫片段」的情況。例如從「坐」狀態切換到「跑」狀態,跑狀態只使用一個動畫片段的話,也會根據這個參數從坐平滑地過渡到跑。有關狀態的說明請參考下文。

  • 開始時間:該動畫片段在軌道上開始播放的時間

  • 結束時間:等於開始時間加上播放長度,不可編輯,隨開始時間和播放長度變化而自動決定

  • 播放長度:片段播放的長度,當大於資源長度時,循環模式參數生效,短於資源長度時,動畫會從後截斷

  • 資源長度:實際動畫資源的長度,不可編輯,由動畫資源自行決定。

*拉長和壓縮動畫片段

image-20250822155932985

您可以透過拖曳的方式改變動畫片段的長度,當拖曳後的u200bu200b長度小於片段的長度時,動畫會被截斷;當拖曳後的u200bu200b長度大於動畫片段時,在預設的動畫播放完畢之後,會多出一段片段時長,這部分的處理方式會根據片段Inspector中的循環模式(Wrap mode)而不同。

動畫片段融合

先前介紹混合淡入時長時已經介紹過,當A動畫片段過渡到B動畫片段時,會在B動畫片段的混合淡入時長內進行過渡。

現在我們有兩段動畫,1是雙手舉起東西,2是單手:

1:

bothhands

2:

singlehand

如果將二者簡單拼接,看起來是在雙手動作結束後立刻開始單手動作:

connect

如果使用融合,那麼看起來在雙手動作完全結束之前就開始了單手動作:

IK

可以看到,在動作1尚未結束的時候,動作2就已經開始,且權重逐漸向動作2分配,在融合結束的時候完全播放動作2。

透過動畫融合,可以讓動作過渡更自然。

如果您在狀態的第一個片段前設定了淡入時間,那麼從其他狀態切換到這個狀態時,會執行自動融合。

動畫預覽

image-20250825164106492

在預覽動畫效果時,可以擅用面板操作和資訊。

面板可以進行以下操作:

  • 跳到最前面、跳到最後
  • 下一幀、上一幀
  • 暫停、播放

同時,右側是從動畫片段開始的幀數和時間,一般來說,動畫是按照固定30幀/秒的速度播放的。

新增關鍵幀

在軌道任意一點點擊關鍵幀,可以添加關鍵幀。

image-20250825164332074

選中這個關鍵影格也可以刪除它。

關鍵影格是人為地標記了動畫中的關鍵節點,您還可以進而為其添加事件,從而服務於腳本。

事件

在關鍵影格的inspector面板選擇新增動畫事件,可以在目前動畫的指定影格數廣播自訂事件:

image-20250825164543585

image-20250825164612242

身體部位動畫

當需要動畫僅在一部分身體上播放時,例如上下半身播放不同的動作,您需要使用身體部位動畫。

首先,您需要建立一個骨骼配置檔案:

<img src=“https://dl.dir.freefiremobile.com/common/OB46/CSH/OfficialWeb/NewAC/image-20250825173052697.png” alt=“image-20250825173052697” style" alt=“image-20250825173052697” style" alt=“image-20250825173052697” style=“zoom”

骨骼配置可以指定一個骨骼的部分骨骼節點,我們稱之為身體部位。

在選擇一個指定骨骼之後,可以看到骨骼中的所有節點。

image-20250825173414360

image-20250825173945687

透過建立身體部位,您可以指定特定的一組骨骼節點來播放動畫,從而達成只播放特定身體部位的動畫的需求。例如我們將上下半身的骨骼區分開:

image-20250826150723496

Override模式,表示在某個骨骼節點同時有多個動畫時,優先權*最高的Override會覆蓋其他的動畫。與之對應的Additive會嘗試融合優先順序較低的動畫。

image-20250826151150811

不過融合模式對動畫資源、調整要求較高,稍有問題就會出現不良的表現。建議優先使用Override模式。

*優先:在骨骼部位、軌道和狀態中,均為越靠下的優先順序越高,在上圖中,Top骨骼部位優先順序大於Bottom骨骼部位。

將配置好的骨骼配置檔拖入編輯面板中,可以在選擇軌道下拉框中發現剛剛配置的骨骼部位:

image-20250826153443435

每個軌道對應一個骨骼部位,Base Track預設選取所有骨骼部位。

接下來我們真正用兩個不同的動作看一下表現。

我們取兩段動畫,分別是:

下蹲走路:

kellyWalking

持槍走路:

kellyGunWalking

可以看出持槍走路的步幅大一些,我們現在取下蹲走路的上半身動作和持槍走路的下半身動作:

image-20250826153233979

持槍走路的動畫時間較短,讓我們拉長持槍走路的動畫使二者對齊,並將循環模式設置為“循環”

image-20250826153329851

可以看到動畫變為了:

kellyIKWalking

同時使用了下蹲行走的上半身動作和持槍行走的下半身動作。

如果在使用骨骼部位動畫時,有些骨頭沒有被分配任何動畫,那麼它們將使用IDLE動畫。

狀態

以上所有這些軌道、動畫片段的組合是一個狀態,可以從面板的左側看到目前動畫控制器的狀態清單:

image-20250826155139522

在實際使用動畫控制器時,是針對狀態進行操作的,播放一個狀態意味著從0幀開始播放它的所有軌道。

所以在進行動畫控制器編輯時,可以規劃好目標有多少種狀態,並為每個狀態編輯適當的動畫片段組合,例如一個小動物的狀態有:Idle、移動、吃東西、警覺、逃跑。

IDLE狀態是必須存在的,它是動畫控制器的預設狀態,且IDLE狀態必須為循環播放。

圖元腳本

image-20250826155520392

透過腳本,您可以讓某個掛載了動畫控制器的實體播放或停止指定狀態、或動態地修改身體部位動畫權重。

如何使用

將一個適合的模型拖曳到場景中:

image-20250826160815206

為其新增Animation Controller Attachable元件:

image-20250826161847812

然後將製作好的動畫控制器加入:

image-20250826161906877

現在這個模型會預設播放IDLE狀態,使用腳本,在適當的實機切換播放的狀態:

image-20250826161958975

玩家開火時,改變miniKelly的播放狀態

PPT3