アニメーション機能の紹介

AnimationPlayer ノードを使用すると、単純なアニメーションから複雑なアニメーションまで何でも作成できます。

このガイドでは、次のことを学びます:

  • アニメーションパネルを使用する

  • 任意のノードのプロパティをアニメーション化する

  • シンプルなアニメーションを作成する

Godotでは、ノードの幾何学変換、スプライト、UI要素、パーティクル、マテリアルの可視性と色など、インスペクタで利用可能なすべての項目をアニメーション化できます。スクリプト変数の値を変更して、任意の関数を呼び出すこともできます。

AnimationPlayerノードを作成する

アニメーションツールを使用するには、最初に AnimationPlayer ノードを作成する必要があります。

The AnimationPlayer node type is the data container for your animations. One AnimationPlayer node can hold multiple animations, which can automatically transition to one another.

AnimationPlayerノード

AnimationPlayerノード

After you create an AnimationPlayer node, click on it to open the Animation Panel at the bottom of the viewport.

アニメーションパネルの位置

アニメーションパネルの位置

The animation panel consists of four parts:

アニメーションパネル

アニメーションパネル

  • アニメーションコントロール (アニメーションの追加、読み込み、保存、削除など)

  • トラックリスト

  • キーフレーム付きのタイムライン

  • The timeline and track controls, where you can zoom the timeline and edit tracks, for example.

コンピューターアニメーションはキーフレームに依存しています

A keyframe defines the value of a property at a point in time.

Diamond shapes represent keyframes in the timeline. A line between two keyframes indicates that the value doesn't change between them.

Godotのキーフレーム

Godotのキーフレーム

You set values of a node's properties and create animation keyframes for them. When the animation runs, the engine will interpolate the values between the keyframes, resulting in them gradually changing over time.

滑らかな動きを得るために必要な2つのキーフレーム

滑らかな動きを得るために必要な2つのキーフレーム

The timeline defines how long the animation will take. You can insert keyframes at various points, and change their timing.

アニメーションパネルのタイムライン

アニメーションパネルのタイムライン

Each line in the Animation Panel is an animation track that references a Normal or Transform property of a node. Each track stores a path to a node and its affected property. For example, the position track in the illustration refers to the position property of the Sprite2D node.

標準のアニメーショントラックの例

標準のアニメーショントラックの例

Tip

If you animate the wrong property, you can edit a track's path at any time by double-clicking on it and typing the new path. Play the animation using the "Play from beginning" button Play from beginning (or pressing Shift + D on keyboard) to see the changes instantly.

チュートリアル: シンプルなアニメーションの作成

シーンの設定

For this tutorial, we'll create a Sprite node with an AnimationPlayer as its child. We will animate the sprite to move between two points on the screen.

シーンのセットアップ

シーンのセットアップ

警告

AnimationPlayer inherits from Node instead of Node2D or Node3D, which means that the child nodes will not inherit the transform from the parent nodes due to a bare Node being present in the hierarchy.

Therefore, it is not recommended to add nodes that have a 2D/3D transform as a child of an AnimationPlayer node.

The sprite holds an image texture. For this tutorial, select the Sprite2D node, click Texture in the Inspector, and then click Load. Select the default Godot icon for the sprite's texture.

Adding an animation

AnimationPlayerノードを選択し、アニメーションエディタの[アニメーション]ボタンをクリックします。リストから[新規] (Add Animation)を選択して、新しいアニメーションを追加します。そして、ダイアログボックスにアニメーションの名前を入力します。

新しいアニメーションの追加

新しいアニメーションの追加

Managing animation libraries

For reusability, the animation is registered in a list in the animation library resource. If you add an animation to AnimationPlayer without specifying any particular settings, the animation will be registered in the [Global] animation library that AnimationPlayer has by default.

Manage animations

Manage animations

If there are multiple animation libraries and you try to add an animation, a dialog box will appear with options.

Add a new animation with library option

Add a new animation with library option

トラックの追加

To add a new track for our sprite, select it and take a look at the toolbar:

便利なボタン

便利なボタン

These switches and buttons allow you to add keyframes for the selected node's location, rotation, and scale. Since we are only animating the sprite's position, make sure that only the location switch is selected. The selected switches are blue.

Click on the key button to create the first keyframe. Since we don't have a track set up for the Position property yet, Godot will offer to create it for us. Click Create.

Godot will create a new track and insert our first keyframe at the beginning of the timeline:

スプライトトラック

スプライトトラック

2番目のキーフレーム

We need to set our sprite's end location and how long it will take for it to get there.

Let's say we want it to take two seconds to move between the points. By default, the animation is set to last only one second, so change the animation length to 2 in the controls on the right side of the animation panel's timeline header.

アニメーションの長さ

アニメーションの長さ

Now, move the sprite right, to its final position. You can use the Move tool in the toolbar or set the Position's X value in the Inspector.

Click on the timeline header near the two-second mark in the animation panel and then click the key button in the toolbar to create the second keyframe.

アニメーションを実行する

[最初から再生] (Play from beginning) ボタンをクリックします。

イェーイ!アニメーションが実行されます:

アニメーション

アニメーション

Autoplay on load

You can make it so an animation plays automatically when the AnimationPlayer nodes scene starts, or joins another scene. To do this click the "Autoplay on load" button in the animation editor, it's right next to the edit button.

../../_images/autoplay_on_load.webp

The icon for it will also appear in front of the name of the animation, so you can easily identify which one is the autoplay animation.

行ったり来たり

Godot has an interesting feature that we can use in animations. When Animation Looping is set but there's no keyframe specified at the end of the animation, the first keyframe is also the last.

This means we can extend the animation length to four seconds now, and Godot will also calculate the frames from the last keyframe to the first, moving our sprite back and forth.

アニメーションループ

アニメーションループ

You can change this behavior by changing the track's loop mode. This is covered in the next chapter.

トラックの設定

Each property track has a settings panel at the end, where you can set its update mode, track interpolation, and loop mode.

トラックの設定

トラックの設定

トラックの更新モードは、プロパティ値を更新するタイミングをGodotに指示します。これには次のものがあります:

  • Continuous: Update the property on each frame

  • Discrete: Only update the property on keyframes

  • Capture: if the first keyframe's time is greater than 0.0, the current value of the property will be remembered and will be blended with the first animation key. For example, you could use the Capture mode to move a node that's located anywhere to a specific location.

トラックモード

トラックモード

You will usually use "Continuous" mode. The other types are used to script complex animations.

Track interpolation tells Godot how to calculate the frame values between keyframes. These interpolation modes are supported:

  • 近傍: 最も近いキーフレーム値を設定します

  • リニア: 2つのキーフレーム間の線形関数計算に基づいて値を設定します

  • キュービック: 2つのキーフレーム間の3次関数計算に基づいて値を設定します

  • Linear Angle (Only appears in rotation property): Linear mode with shortest path rotation

  • Cubic Angle (Only appears in rotation property): Cubic mode with shortest path rotation

トラック補間

トラック補間

With Cubic interpolation, animation is slower at keyframes and faster between them, which leads to more natural movement. Cubic interpolation is commonly used for character animation. Linear interpolation animates changes at a fixed pace, resulting in a more robotic effect.

Godot supports two loop modes, which affect the animation when it's set to loop:

ループモード

ループモード

  • クランプループ補間(Clamp): これを選択すると、このトラックの最後のキーフレームの後にアニメーションが停止します。最初のキーフレームに再び到達すると、アニメーションはその値にリセットされます。

  • ラップループ補間(Wrap): これを選択すると、Godotは最後のキーフレームの後もアニメーションを計算して、最初のキーフレームの値に再び到達します。

その他のプロパティのキーフレーム

Godot's animation system isn't restricted to position, rotation, and scale. You can animate any property.

If you select your sprite while the animation panel is visible, Godot will display a small keyframe button in the Inspector for each of the sprite's properties. Click on one of these buttons to add a track and keyframe to the current animation.

その他のプロパティのキーフレーム

その他のプロパティのキーフレーム

キーフレームの編集

You can click on a keyframe in the animation timeline to display and edit its value in the Inspector.

キーを編集するキーフレームエディタ

キーを編集するキーフレームエディタ

You can also edit the easing value for a keyframe here by clicking and dragging its easing curve. This tells Godot how to interpolate the animated property when it reaches this keyframe.

You can tweak your animations this way until the movement "looks right."

Using RESET tracks

You can set up a special RESET animation to contain the "default pose". This is used to ensure that the default pose is restored when you save the scene and open it again in the editor.

For existing tracks, you can add an animation called "RESET" (case-sensitive), then add tracks for each property that you want to reset. The only keyframe should be at time 0, and give it the desired default value for each track.

If AnimationPlayer's Reset On Save property is set to true, the scene will be saved with the effects of the reset animation applied (as if it had been seeked to time 0.0). This only affects the saved file – the property tracks in the editor stay where they were.

If you want to reset the tracks in the editor, select the AnimationPlayer node, open the Animation bottom panel then choose Apply Reset in the animation editor's Edit dropdown menu.

When using the keyframe icon next to a property in the inspector the editor will ask you to automatically create a RESET track.

注釈

RESET tracks are also used as reference values for blending. See also For better blending.

Onion Skinning

Godot's animation editor allows you use onion skinning while creating an animation. To turn this feature on click on the onion icon in the top right of the animation editor. Now there will be transparent red copies of what is being animated in its previous positions in the animation.

../../_images/onion_skin.webp

The three dots button next to the onion skinning button opens a dropdown menu that lets you adjust how it works, including the ability to use onion skinning for future frames.

Animation Markers

Animation markers can be used to play a specific part of an animation rather than the whole thing. Here is a use case example, there's an animation file that has a character doing two distinct actions, and the project requires the whole animation, as well as both actions individually. Instead of making two additional animations, markers can be placed on the timeline, and both actions can now be played individually.

To add a marker to an animation right click the space above the timeline and select Insert Marker....

../../_images/animation_marker_click_area.webp

All markers require a unique name within the animation. You can also set the color of the markers for improved organization.

To play the part of the animation between two markers use the play_section_with_markers() and play_section_with_markers_backwards() methods. If no start marker is specified then the beginning of the animation is used, and if no end marker is specified, then the end of the animation is used.

If the end marker is after the end of the animation then the AnimationPlayer will clamp the end of the section so it does not go past the end of the animation.

To preview the animation between two markers use Shift + Click to select the markers. When two are selected the space between them should be highlighted in red.

../../_images/animation_marker_selected.webp

Now all of the play animation buttons will act as if the selected area is the whole animation. Play Animation from Start will treat the first marker as the start of the animation, Play Animation Backwards from End will treat the second marker as the end, and so on.