<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>アニメーション on Godot 4 レシピ</title><link>https://kamera25.github.io/godot_recipes/4.x/ja/animation/index.html</link><description>Recent content in アニメーション on Godot 4 レシピ</description><generator>Hugo -- gohugo.io</generator><language>ja</language><atom:link href="https://kamera25.github.io/godot_recipes/4.x/ja/animation/index.xml" rel="self" type="application/rss+xml"/><item><title>スプライトシートアニメーション</title><link>https://kamera25.github.io/godot_recipes/4.x/ja/animation/spritesheet_animation/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kamera25.github.io/godot_recipes/4.x/ja/animation/spritesheet_animation/index.html</guid><description>&lt;h2 id="課題"&gt;課題&lt;/h2&gt;
&lt;p&gt;2Dアニメーションを含むスプライトシートを使いたい。&lt;/p&gt;
&lt;h2 id="解決策"&gt;解決策&lt;/h2&gt;
&lt;p&gt;スプライトシートは2Dアニメーションの一般的な配布形式です。単一の画像ファイルに全てのアニメーションフレームを集約した形式で、効率的なデータ管理ができます。&lt;/p&gt;
&lt;p&gt;このデモでは、Elthen氏制作の優れた「冒険者」スプライトを使用します。このアセットをはじめ、多くの高品質なアート素材は以下から入手できます。&lt;a href="https://elthen.itch.io/" target="_blank"&gt;https://elthen.itch.io/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-c315912b9a313e48836f74568ad68fb9" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/adventurer_sprite_sheet_v1.1.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-c315912b9a313e48836f74568ad68fb9"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/adventurer_sprite_sheet_v1.1.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;div class="box notices cstyle warning"&gt;
&lt;div class="box-label"&gt;&lt;i class="fa-fw fas fa-exclamation-triangle"&gt;&lt;/i&gt; 警告&lt;/div&gt;
&lt;div class="box-content"&gt;
&lt;p&gt;Godotが自動的に画像を切り分けできるように、スプライトシート内の画像は均一なグリッド状に配置してください。不規則に配置されている場合、ここで説明する手法は使用できませんのでご注意ください。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="ノード設定"&gt;ノード設定&lt;/h3&gt;
&lt;p&gt;このアニメーション手法では、&lt;i class="gd-Sprite2D"&gt;&lt;/i&gt;&lt;code&gt;Sprite2D&lt;/code&gt;ノードを使用してテクスチャを表示し、その後&lt;i class="gd-AnimationPlayer"&gt;&lt;/i&gt;&lt;code&gt;AnimationPlayer&lt;/code&gt;でフレームの切り替えをアニメーション化します。これはあらゆる2Dノードで使用できますが、ここではデモンストレーション用に&lt;i class="gd-CharacterBody2D"&gt;&lt;/i&gt;&lt;code&gt;CharacterBody2D&lt;/code&gt;ノードを使用しています。&lt;/p&gt;
&lt;p&gt;以下のノードをシーンに追加してください。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&lt;i class="gd-CharacterBody2D"&gt;&lt;/i&gt;CharacterBody2D: Player
&lt;i class="gd-Sprite2D"&gt;&lt;/i&gt; Sprite2D
&lt;i class="gd-CollisionShape2D"&gt;&lt;/i&gt; CollisionShape2D
&lt;i class="gd-AnimationPlayer"&gt;&lt;/i&gt; AnimationPlayer
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;i class="gd-Sprite2D"&gt;&lt;/i&gt;&lt;code&gt;Sprite2D&lt;/code&gt;コンポーネントの &lt;em&gt;Texture&lt;/em&gt; プロパティにスプライトシートテクスチャをドラッグ＆ドロップしてください。ビューポート内にすべてのスプライトシートが表示されます。個別のフレームに分割するには、インスペクターの「Animation」セクションを展開し、 &lt;em&gt;Hframes&lt;/em&gt; を &lt;code&gt;13&lt;/code&gt;、 &lt;em&gt;Vframes&lt;/em&gt; を &lt;code&gt;8&lt;/code&gt;に設定します。&lt;em&gt;Hframes&lt;/em&gt; と &lt;em&gt;Vframes&lt;/em&gt; は、それぞれ水平方向および垂直方向のフレーム数を指定するパラメーターです。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-b6ecc91361a842f0e15c2e154e6f8710" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/sprite_animation_01.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-b6ecc91361a842f0e15c2e154e6f8710"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/sprite_animation_01.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Frame&lt;/em&gt; プロパティを変更してみて、画像がどのように変化するか見てみてください。これは後ほどアニメーション化するプロパティです。&lt;/p&gt;
&lt;h3 id="アニメーションの追加方法"&gt;アニメーションの追加方法&lt;/h3&gt;
&lt;p&gt;以下の手順に従ってアニメーションを設定します。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;「&lt;i class="gd-AnimationPlayer"&gt;&lt;/i&gt;&lt;code&gt;AnimationPlayer&lt;/code&gt;コンポーネントを選択します。&lt;/li&gt;
&lt;li&gt;「アニメーション」ボタンをクリックし、続いて「新規作成」を選択します。&lt;/li&gt;
&lt;li&gt;新しいアニメーションに「idle」という名前を付けます。&lt;/li&gt;
&lt;li&gt;アニメーションの長さを &lt;code&gt;2&lt;/code&gt; に設定します。&lt;/li&gt;
&lt;li&gt;「ループ」ボタンをクリックして、アニメーションが繰り返し再生されるようにします（詳細は以下を参照）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;スクラバーが&lt;code&gt;0&lt;/code&gt;時点で、&lt;i class="gd-Sprite2D"&gt;&lt;/i&gt;&lt;code&gt;Sprite2D&lt;/code&gt;ノードを選択します。アニメーションのフレーム番号を&lt;code&gt;0&lt;/code&gt;に設定し、値の隣にあるキーアイコンをクリックします。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-b3d0ac32b282b7ba2170955b05864283" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/sprite_animation_02.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-b3d0ac32b282b7ba2170955b05864283"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/sprite_animation_02.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;アニメーションを再生してみると、何も変化がないように見えます。これは最後のフレーム（12）が最初のフレーム（0）と全く同じ表示になっているためで、その間のフレーム（1～11）が全く反映されていないからです。これを修正するには、トラックの「更新モード」をデフォルト値の「離散」から「連続」に変更してください。このボタンはトラック右側の端に配置されています。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-2a369021da8877731242240402b3ba5b" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/sprite_animation_03.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-2a369021da8877731242240402b3ba5b"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/sprite_animation_03.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この方法が有効なのは、フレームがすでに順序通りに並んでいることが前提です。そうでない場合は、タイムライン上で各 &lt;em&gt;Frame&lt;/em&gt; を個別にキーフレーム化が必要です。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-2e9d7c6f7d063a99aa57bcb3a6cd8922" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/sprite_animation_04.gif" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-2e9d7c6f7d063a99aa57bcb3a6cd8922"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/sprite_animation_04.gif" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;自由に他のアニメーションを追加してください。例えば「ジャンプ」アニメーションはフレーム &lt;code&gt;65&lt;/code&gt;～&lt;code&gt;70&lt;/code&gt; に設定されています。&lt;/p&gt;
&lt;h2 id="関連レシピ"&gt;関連レシピ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kamera25.github.io/godot_recipes/4.x/ja/2d/platform_character/"&gt;プラットフォームキャラクター&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- - [アニメーション状態のコントロール](/godot_recipes/4.x/ja/animation/animation_state_machine/) --&gt;</description></item><item><title>近接攻撃</title><link>https://kamera25.github.io/godot_recipes/4.x/ja/animation/melee_attacks/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kamera25.github.io/godot_recipes/4.x/ja/animation/melee_attacks/index.html</guid><description>&lt;div class="box notices cstyle tips"&gt;
&lt;div class="box-label"&gt;ℹ️ 留意事項&lt;/div&gt;
&lt;div class="box-content"&gt;
&lt;p&gt;この記事は Godot 3から Godot 4 へ内容の書き換え中です。
Godot4では存在しない変数、関数が含まれている場合があります。もしその場合はリポジトリの&lt;a href="https://github.com/kamera25/godot_recipes/issues" target="_blank"&gt;Issues&lt;/a&gt;までご報告ください。&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="課題"&gt;課題&lt;/h2&gt;
&lt;p&gt;剣やパンチなどの近接攻撃を実装したい。&lt;/p&gt;
&lt;h2 id="解決策"&gt;解決策&lt;/h2&gt;
&lt;p&gt;本例では、既に攻撃アニメーションが設定されたキャラクターが存在すると仮定します。説明のために、以下の2種類の攻撃を使用します。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-d839f6e9b36179f9b2f106f21fefdda3" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/attack2.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-d839f6e9b36179f9b2f106f21fefdda3"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/attack2.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-6b8b92a72b3d842b08849cf8fc711d14" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/attack1.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-6b8b92a72b3d842b08849cf8fc711d14"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/attack1.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;i class="gd-Area2D"&gt;&lt;/i&gt;&lt;code&gt;Area2D&lt;/code&gt; を使用して剣がターゲットに命中したことを検出できますが、実際に有効化する必要があるのはスイング動作中のみです。アニメーションと同期させるためには、この活性化をAnimationPlayerで制御します。&lt;/p&gt;
&lt;p&gt;シーンに &lt;i class="gd-Area2D"&gt;&lt;/i&gt;&lt;code&gt;Area2D&lt;/code&gt; と &lt;i class="gd-CollisionShape2D"&gt;&lt;/i&gt;&lt;code&gt;CollisionShape2D&lt;/code&gt; を追加してください。ヒットボックスには矩形形状を使用し、剣が振り上げフレームで完全にカバーされるようにサイズを調整します。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-6dfe5308651032fc37a2ee9dafc2e18f" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_01.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-6dfe5308651032fc37a2ee9dafc2e18f"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_01.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;アニメーションを最初のフレームに移動し、領域の [無効] プロパティを確認します。キーフレームアイコンをクリックしてアニメーションにトラックを追加してください。次に、剣が伸びているフレームまでアニメーションを進め、[無効] を解除した状態でもう1つのキーフレームを追加してください。最後に、スイングの終わりまで進み、再度 [無効] を有効にしてキーフレームを作成します。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-8c0c329e37ef69cad54661164b871838" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_02.gif" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-8c0c329e37ef69cad54661164b871838"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_02.gif" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;新しいエリアの&lt;code&gt;area_entered&lt;/code&gt;シグナル（またはゲームの設定によっては、&lt;code&gt;body_entered&lt;/code&gt;）を接続します。このデモでは、ダメージを受け取れる任意のボディには&lt;i class="gd-Area2D"&gt;&lt;/i&gt;&lt;code&gt;Area2D&lt;/code&gt;が定義され、「hurtbox」というグループ内に配置されているとします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#d8dee9;background-color:#2e3440;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-gdscript" data-lang="gdscript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#81a1c1;font-weight:bold"&gt;func&lt;/span&gt; &lt;span style="color:#88c0d0"&gt;_on_SwordHit_area_entered&lt;/span&gt;&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;area&lt;span style="color:#eceff4"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#81a1c1;font-weight:bold"&gt;if&lt;/span&gt; area&lt;span style="color:#81a1c1"&gt;.&lt;/span&gt;&lt;span style="color:#88c0d0"&gt;is_in_group&lt;/span&gt;&lt;span style="color:#eceff4"&gt;(&lt;/span&gt;&lt;span style="color:#a3be8c"&gt;&amp;#34;hurtbox&amp;#34;&lt;/span&gt;&lt;span style="color:#eceff4"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; area&lt;span style="color:#81a1c1"&gt;.&lt;/span&gt;&lt;span style="color:#88c0d0"&gt;take_damage&lt;/span&gt;&lt;span style="color:#eceff4"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで実際に試してみて、ターゲットが剣の当たり判定範囲内にいればダメージが発生するか確認できるはずです。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-162716230e9acab770d5a7b328096de2" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_03.gif" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-162716230e9acab770d5a7b328096de2"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_03.gif" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="ヒットボックスサイズの変更方法"&gt;ヒットボックスサイズの変更方法&lt;/h3&gt;
&lt;p&gt;複数の攻撃アニメーションがある場合、ダメージ範囲の大きさが統一されていないことがあります。上記のアニメーション例では、最初の動きは広範囲をカバーする斜め上方向への振り下ろし攻撃です。この処理に対応するため、衝突形状の &lt;em&gt;Extents&lt;/em&gt; プロパティに対するアニメーショントラックも追加が必要です。この値を設定して各アニメーションの開始時にキーフレームとして登録してください。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-bd6188f7cda3d7b810ddd2eb5f1b7b42" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_04.gif" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-bd6188f7cda3d7b810ddd2eb5f1b7b42"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_04.gif" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-723088b196ea19f80f53b5df9dab6356" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_05.gif" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-723088b196ea19f80f53b5df9dab6356"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/melee_attack_05.gif" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="関連レシピ"&gt;関連レシピ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kamera25.github.io/godot_recipes/4.x/ja/2d/topdown_movement/#option-1-8-way-movement"&gt;見下ろし型キャラクター制御&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kamera25.github.io/godot_recipes/4.x/ja/animation/animation_state_machine/"&gt;アニメーション状態の管理方法&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="この動画が気に入ったら"&gt;この動画が気に入ったら？&lt;/h4&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/AaJopFFkmNo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>アニメーションツリーを使う</title><link>https://kamera25.github.io/godot_recipes/4.x/ja/animation/using_animation_sm/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kamera25.github.io/godot_recipes/4.x/ja/animation/using_animation_sm/index.html</guid><description>&lt;h2 id="課題"&gt;課題&lt;/h2&gt;
&lt;p&gt;アニメーションの数が増えすぎて、シーン間の切り替え管理が困難になってきていませんか？コードが大量の &lt;code&gt;if&lt;/code&gt; 文で埋め尽くされ、少し変更を加えるたびに全体が壊れてしまいそうになっていませんか？&lt;/p&gt;
&lt;h2 id="解決策"&gt;解決策&lt;/h2&gt;
&lt;p&gt;アニメーション状態機械を作成するには &lt;i class="gd-AnimationTree"&gt;&lt;/i&gt;&lt;code&gt;AnimationTree&lt;/code&gt; を使いましょう。これにより、アニメーションを整理できるだけでなく、最も重要な点として、それらの間の遷移を制御することが可能になります。&lt;/p&gt;
&lt;h3 id="はじめに"&gt;はじめに&lt;/h3&gt;
&lt;p&gt;本デモでは、Elthen氏作の素晴らしいスプライト「Adventurer」を使用しています。この素材を含め、他にも数多くの高品質なアート作品は&lt;a href="https://elthen.itch.io/" target="_blank"&gt;https://elthen.itch.io/&lt;/a&gt;で入手できます。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-a50fd3b718254b4d77c46009a750b7b8" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/adventurer_sprite_sheet_v1.1.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-a50fd3b718254b4d77c46009a750b7b8"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/adventurer_sprite_sheet_v1.1.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll also assume you&amp;rsquo;ve already set up the character&amp;rsquo;s animations using &lt;i class="gd-AnimationPlayer"&gt;&lt;/i&gt;&lt;code&gt;AnimationPlayer&lt;/code&gt;. Using the above spritesheet, we have the following animations: &amp;ldquo;idle&amp;rdquo;, &amp;ldquo;run&amp;rdquo;, &amp;ldquo;attack1&amp;rdquo;, &amp;ldquo;attack2&amp;rdquo;, &amp;ldquo;hurt&amp;rdquo;, and &amp;ldquo;die&amp;rdquo;.&lt;/p&gt;
&lt;h3 id="アニメーションツリー"&gt;アニメーションツリー&lt;/h3&gt;
&lt;p&gt;シーンに &lt;i class="gd-AnimationTree"&gt;&lt;/i&gt;&lt;code&gt;AnimationTree&lt;/code&gt; ノードを追加してください。［ツリールート］プロパティで「新規アニメーションノードステートマシン」を選択してください。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-7a63ecc57c3059171ad42edc3c8d48c4" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/animation_tree_01.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-7a63ecc57c3059171ad42edc3c8d48c4"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/animation_tree_01.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;i class="gd-AnimationPlayer"&gt;&lt;/i&gt;&lt;i class="gd-AnimationTree"&gt;&lt;/i&gt;&lt;code&gt;AnimationTree&lt;/code&gt;で作成されたアニメーションを制御するノードです。既存のアニメーションにアクセスさせるには、&lt;em&gt;Anim Player&lt;/em&gt; プロパティ内の「割り当て」ボタンをクリックし、使用するアニメーションノードを選択してください。&lt;/p&gt;
&lt;p&gt;以下は、状態機械を &lt;i class="gd-AnimationTree"&gt;&lt;/i&gt;&lt;code&gt;AnimationTree&lt;/code&gt; パネルに設定し始める方法です。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-67e03d92d0547a0e4471522ed423eb2b" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/anim_tree_panel.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-67e03d92d0547a0e4471522ed423eb2b"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/anim_tree_panel.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;警告に注意してください。インスペクターで 「_アクティブ」プロパティを「オン」に設定します。&lt;/p&gt;
&lt;p&gt;右クリックして「アニメーションを追加」を選択します。「待機」を選択すると、そのアニメーションを表す小さなボックスが表示されます。「再生」ボタンを押すとアニメーションが実行されるはずです。他のアニメーションを追加する場合も同じ手順で行ってください。&lt;/p&gt;
&lt;p&gt;接続を追加できるようになりました。「ノードを接続」ボタンをクリックして、ノード間でドラッグして接続してください。例として、この2つの攻撃アニメーションを使います。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-7bd594844332d8fec4678d341a7d2a9a" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/animation_tree_03.png" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-7bd594844332d8fec4678d341a7d2a9a"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/animation_tree_03.png" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;アニメーションを選択すると、ツリーは現在のノードから目的地まで接続経路に沿って追従します。ただし、上記の設定では「attack2」を再生しても途中で「attack1」は表示されません。これは、接続におけるデフォルトの「スイッチモード」が「即時」に設定されているためです。まず「移動/選択」ボタンをクリックし、次に「attack1」と「attack2」間の接続ポイントをクリックします。インスペクターで「&lt;strong&gt;スイッチモード&lt;/strong&gt;」を「終点時」に変更してください。同様の操作を「attack2」から「idle」に対しても行います。接続アイコンが &lt;i class="fas fa-play"&gt;&lt;/i&gt; から &lt;i class="fas fa-step-forward"&gt;&lt;/i&gt; へと変化します。&lt;/p&gt;
&lt;p&gt;「idle」が再生されている状態で「attack2」をクリックすると、二つの攻撃が順番に再生されるようになります。&lt;/p&gt;
&lt;p&gt;しかし、現在「attack2」アニメーションが停止しています。接続時には、&lt;strong&gt;進行状況/モード&lt;/strong&gt;プロパティを「自動」に設定してください。これにより、両方のアニメーション再生後にツリーが「待機」状態に戻ります。なお、接続アイコンが緑色に変化することでこの状態が表示されます。&lt;/p&gt;
&lt;p&gt;
&lt;a href="#image-16b5ef0020ef517240e383e28f81be43" class="lightbox-link"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/animation_tree_05.gif" alt="alt" style="height: auto; width: auto;" loading="lazy"&gt;
&lt;/a&gt;
&lt;a href="javascript:history.back();" class="lightbox" id="image-16b5ef0020ef517240e383e28f81be43"&gt;
&lt;img src="https://kamera25.github.io/godot_recipes/4.x/img/animation_tree_05.gif" alt="alt" class="lightbox-image" loading="lazy"&gt;
&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>