Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

建置系統簡介

AnimationPlayer 節點允許您建立從簡單到複雜的任何動畫。

在本指南中,您將學會:

  • 使用動畫面板

  • 使任何節點的任何屬性變成動畫

  • 建立簡單的動畫

在 Godot 中,你可以對“屬性面板”中可用的任何內容設定動畫,例如 Node 的變換、精靈、UI 元素、粒子、可見性、材質的顏色等等。您還可以修改腳本變數的值、呼叫任何函式。

建立 AnimationPlayer 節點

要使用動畫工具, 我們首先必須建立一個 AnimationPlayer 節點.

AnimationPlayer節點型別是動畫的資料容器. 一個AnimationPlayer節點可以保存多個動畫, 這些動畫可以自動相互轉換.

AnimationPlayer節點

AnimationPlayer節點

建立後, 按一下節點分頁中的AnimationPlayer節點, 打開視口底部的動畫面板.

動畫面板位置

動畫面板位置

它由四部群組成:

動畫面板

動畫面板

  • 動畫控制項(即新增, 載入, 保存和刪除動畫)

  • 軌道列表

  • 帶有關鍵影格的時間軸

  • 時間軸和軌道控制項, 例如, 您可以在其中縮放時間軸和編輯軌道.

電腦動畫依賴於關鍵影格

關鍵影格定義屬性在某一時間點的值.

菱形代表時間軸中的關鍵影格. 兩個關鍵影格之間的線表示該值未更改.

Godot中的關鍵影格

Godot中的關鍵影格

您設定節點屬性的值並為其建立動畫關鍵影格。當動畫運作時,引擎將在關鍵影格之間插入值,導致它們隨著時間的推移逐漸變化。

只需兩個關鍵影格就可以獲得一個平滑運動

只需兩個關鍵影格就可以獲得一個平滑運動

時間軸定義動畫需要多長時間。您可以在不同的點插入關鍵影格,並更改其時間。

動畫面板中的時間軸

動畫面板中的時間軸

動畫面板中的每一行都是引用節點的法線或變換屬性的動畫軌道。每個軌道儲存節點的路徑及其受影響的屬性。例如,圖中的位置軌跡指的是 Sprite2D 節點的「position」屬性。

普通動畫軌道的範例

普通動畫軌道的範例

小訣竅

如果你的動畫屬性錯誤, 你可以隨時編輯軌道路徑. 按兩下它並輸入新的路徑. 使用 "從頭開始播放" 按鈕|從頭開始播放|(或按鍵盤上的 Shift + D )播放動畫, 可以立即看到變化.

教學:建立簡單的動畫

場景設定

在本教學中,我們將建立一個 AnimationPlayer 節點,並將精靈(Sprite)節點作為其子節點。我們會讓這個精靈在螢幕上的兩點之間進行移動。

我們的場景設定

我們的場景設定

警告

AnimationPlayer 繼承自 Node 而不是 Node2D 或者 Spatial。因為層級中間出現了普通的 Node 節點,所以它的子節點不會繼承父節點的變換。

所以,不建議把具有 2D 或者 3D 變換的節點設定成 AnimationPlayer 節點的子節點。

精靈擁有圖像紋理。在本教學中,選擇 Sprite2D 節點,在屬性面板中按一下“紋理”,然後按一下“載入”。為精靈的紋理選擇預設的 Godot 圖示。

新增函式

選中 AnimationPlayer 節點,然後點擊動畫編輯器中的“動畫”按鈕。從列表中選擇“新建”( 動畫 )來新增一個新的動畫,並在對話方塊中為該動畫輸入名稱。

新增新動畫

新增新動畫

訊號與屬性

為了可重複使用性,動畫被註冊在動畫庫資源的列表中。如果您將動畫新增至AnimationPlayer而不指定任何特定設定,則該動畫將預設註冊到AnimationPlayer具有的[Global]動畫庫中。

攝影機動畫

攝影機動畫

如果有多個動畫庫並且您嘗試新增動畫,則會出現一個包含選項的對話方塊。

新增新動畫

新增新動畫

新增軌道

要為我們的精靈新增一個新的軌道, 選擇它並在工具列中查看:

方便按鈕

方便按鈕

這些開關和按鈕允許您為選擇的節點的位置, 旋轉和比例分別新增關鍵影格.

由於我們還沒有為變換或位置屬性設定軌道,Godot詢問是否應該設定, 點擊 Create .

這會在時間軸的開頭建立一個新軌道和第一個關鍵影格:

精靈軌道

精靈軌道

第二個關鍵影格

現在我們需要設定我們的精靈應該到達的目的地以及到達那裡需要多長時間.

讓我們說, 我們希望它需要2秒才能到達另一個點. 預設情況下, 動畫設定為僅持續1秒, 因此在動畫面板下方面板的時間軸控制項中將其更改為2.

動畫長度

動畫長度

現在,將精靈向右移動到其最終位置。您可以使用工具列中的*移動工具*或在*屬性面板*中設定*位置*的X值。

點擊2秒附近的時間線標記, 將精靈移動到右側的目標目的地.

運作動畫

點擊“從頭開始播放”(從頭開始播放)按鈕。

好極了! 我們的動畫運作:

動畫

動畫

來來回回

Godot 有一個有趣的功能,我們可以在動畫中使用。當設定了動畫循環但動畫結尾沒有指定關鍵影格時,第一個關鍵影格也是最後一個關鍵影格。

這意味著我們現在可以將動畫長度延長到四秒,Godot 還將計算從最後一個關鍵影格到第一個關鍵影格的影格,來回移動我們的精靈。

動畫迴圈

動畫迴圈

如果你現在將動畫長度設定為4秒, 動畫就會來回移動. 如果改變軌道的迴圈模式, 你可以改變這種行為. 這將在下一章中介紹.

軌道設定

每條軌道最後都有一個設定面板,可以設定更新模式, 軌道插值, 迴圈模式。

軌道設定

軌道設定

軌道的更新模式告訴 Godot 何時更新屬性值。這可以是:

  • **連續:**每影格都更新屬性

  • **離散:**僅在位於關鍵影格時更新屬性

  • **捕獲:**如果第一個關鍵影格的時間大於 0.0,就會記錄該屬性的目前值,並將其與第一個動畫影格混合。例如,利用“捕獲”模式,你可以將處於任意位置的節點移動到特定的位置。

軌道模式

軌道模式

在普通動畫中,你通常使用“連續”。其他型別可用於編排複雜動畫。

插值告訴 Godot 如何計算關鍵影格之間的影格值。支援的插值模式有:

  • 臨近:設定為最接近的關鍵影格的值

  • 線性:使用線性函式計算兩個關鍵影格之間的值

  • 三次方:使用三次函式計算兩個關鍵影格之間的值

  • 線性角度(僅出現在旋轉屬性中):具有最短路徑旋轉的線性模式

  • 立方角(僅出現在旋轉屬性中):具有最短路徑旋轉的立方模式

軌道插值

軌道插值

立方插值導致更自然的運動, 其中動畫在關鍵影格處較慢而在關鍵影格之間更快. 這通常用於角色動畫. 線性插值創造了更多的機器人運動.

Godot支援兩種迴圈模式, 如果將其設定為迴圈, 則會影響動畫:

迴圈模式

迴圈模式

  • 鉗位迴圈插值: 選擇此選項後, 動畫將在此軌道的最後一個關鍵影格之後停止. 再次到達第一個關鍵影格時, 動畫將重設為其值.

  • 包迴圈插值: 當選擇此項時,Godot會在最後一個關鍵影格之後計算動畫, 以再次達到第一個關鍵影格的值.

其他屬性的關鍵影格

Godot 的動畫系統不限於位置、旋轉和縮放。您可以為任何屬性設定動畫。

如果你在動畫面板可見時選擇你的精靈, 會獲得一個小的關鍵影格按鈕, 用於顯示精靈的所有屬性. 點擊這個按鈕,Godot就會自動為目前動畫新增一個軌道和關鍵影格.

其他屬性的關鍵影格

其他屬性的關鍵影格

編輯關鍵影格

您可以點擊動畫時間軸中的關鍵影格以在*屬性面板*中顯示和編輯其值。

關鍵影格編輯器編輯一個鍵

關鍵影格編輯器編輯一個鍵

此外,還可以通過按一下並拖動緩動設定來編輯此關鍵影格的緩動值。這將告訴 Godot,當它到達此關鍵影格時如何更改屬性值。

當這個動作“看起來不正確”時,您通常會以這種方式調整您的動畫

使用空白字元

你可以設定一個特殊的 *RESET*(重設)動畫來包含“預設姿勢”。這樣就可以保證在保存場景並重新在編輯器中打開時,會恢復預設姿勢。

對於已存在的軌道,你可以新增一個名為“RESET”(大小寫敏感)的動畫,然後為每一個你希望重設的屬性新增軌道。應該只在時間為 0 處存在一個關鍵影格,其值為每條軌道所期望的預設值。

如果 AnimationPlayer 的 **Reset On Save**(保存時重設)屬性為 true,場景在保存時會應用重設動畫的效果(相當於尋道到 0.0 時間點的效果)。只有保存的檔會受到影響——編輯器中的屬性軌道還是會保持原樣。

如果你想要在編輯器中重設軌道,請選中 AnimationPlayer 節點,打開**動畫**底部面板,然後選擇動畫編輯器**動畫**下拉式功能表中的**應用重設**。

為新建的動畫新增軌道時,如果使用的是屬性面板中屬性旁的關鍵影格圖示,編輯器會詢問是否自動新增一條 RESET 軌道。這對於使用 3.4 版本之前的 Godot 建立的軌道並不適用,因為動畫重設軌道功能是在 3.4 版本中加入的。

備註

RESET 軌道也用作混合的參考值。另請參閱“為了更好地混合<../animation/animation_tree.html#for-better-blending>”__。