チュートリアル:「ACTION GAME MAKERをゼロから使う」—第2章

チュートリアル:「ACTION GAME MAKERをゼロから使いこなす」——第2章

第2章:簡単なステージを作ってみよう!

第2章の目標

ここから、本格的にアクションシューティングゲームの制作に取り掛かります。

本章では、以下の内容をステップバイステップで実現する簡単なステージを作成します:

  • プレイヤーキャラクターが歩行・ジャンプできる

この章を終了すると、以下のような動画の内容を再現できるようになります。


制作手順

  1. まず、ステージ自体のためのシーンを作成します。

  2. 次に、このステージ内にキャラクターが歩行・ジャンプできるプラットフォームを配置します。

  3. その後、キャラクターシーンを作成し、ビジュアルスクリプト(Visual Script) を使用して、キャラクターの移動などの基本的な動作を追加します。

「ゲームシーン(Game Scene)」と「ゲームオブジェクト(Game Object)」の学習

第1章では、Godotエンジンに標準で備わっている機能のみを使用してすべての操作を行いました。
ここから、ACTION GAME MAKERが提供する追加機能を正式に使用してゲームを構築していきます。

Godotエンジンでは、通常、ノードを1つずつルートノードの下に追加して、
キャラクターやステージなどのさまざまな要素を作成します。
しかし、この方法は時間がかかることが多いです。

そのため、ACTION GAME MAKERは2つの主要なプリセットシーンタイプを提供し、
ゲーム制作プロセスをより効率的にします:

  • Game Scene(ゲームシーン)

    • Game Sceneは、ステージやレベルを作成するためのシーンです。
  • Game Object(ゲームオブジェクト)

    • Game Objectは、プレイヤー、敵、アイテムなどの要素を作成するためのシーンです。

ACTION GAME MAKERでは、Game ObjectGame Sceneに配置することで、
段階的にゲーム全体を構築していきます。


ACTION GAME MAKERが追加した機能の識別方法

ACTION GAME MAKERが追加した機能 ——
たとえばGame SceneGame Object —— は、
青とオレンジの2色を組み合わせたアイコンで識別されます。

このような2色のアイコンが付いたノードやボタンを見かけた場合、
それらがACTION GAME MAKER専用の機能であると判断できます。

一方、Godotエンジンの標準ノードは通常単色のアイコン
(例:白、青、緑など)を使用しますが、
例外的に複数の色を使用するものもあります。

「Game Scene(ゲームシーン)」の作成

次に、Game Scene(ゲームシーン) を作成します。


操作手順

  1. Scene(シーン) タブで、「+」(Add New Scene) ボタンをクリックします。

  1. 表示される Scene ウィンドウで、Create Root Node から Game Scene を選択します。

  1. その後、Scene ウィンドウ内に多数のノードが自動的に生成されます。
    これらが Game Scene を構成するプリセットノードです。

  1. これは新規作成したシーンなので、まず保存しましょう。

    • \[unsaved\] タブを右クリックし、Save Scene As を選択します。

  1. これはステージ(Stage)シーンなので、stage1.tscn として保存してください。


Game Scene の構造

あなたはすでに、突然多くのノードが追加されたことに気づいているでしょう。
では、それぞれのノードはどのような役割を果たしているのでしょうか?

ACTION GAME MAKER では、Game Scene は「レイヤー(Layer)」の概念によって構成されています

レイヤー(Layer) は、奥行きを表現するためのもので、劇場のステージ構造に似ています:

  • 背景レイヤー(Background Layer):最も奥に位置し、背景のセットを表示します。
  • キャラクターレイヤー(Character Layer):中央に位置し、キャラクターが活動・演技する空間です。
  • 前景レイヤー(Foreground Layer):最も手前に位置し、観客に最も近い小道具などを配置します。

「手前のカメラ」から見た場合、
これらのレイヤーが共同でゲーム内の完全なシーンを構成します。

ACTION GAME MAKER ではデフォルトで 7つのレイヤー が提供されています。
それぞれ異なる名前とアイコンを持ち、機能的にも若干の違いがあり、
下図に示す順序で重ねられています。

デフォルトでは、各レイヤーには最低限必要なプリセットノードが設定されており、
シーン全体にはシーンを撮影するためのカメラも含まれています。


「SceneLayer」ノードと「UI」/「PostEffectLayer」ノードの違い

この7つのレイヤーのアイコンをよく見ると、おおよそ2つのグループに分類できます:

  1. Base から DistantView までの5つのレイヤー
    — これらはすべて SceneLayer ノードの子ノードです。

  2. UIPostEffectLayer の2つのレイヤー。

これらの違いは以下の通りです:

  • SceneLayer ノード は空間的な奥行きを持つ領域を表し、
    表示内容はカメラの位置の変化に応じて変わります。

  • UIPostEffectLayer ノードは、
    カメラがどのように移動しても、常に画面上に表示されます。

劇場の比喩で理解すると:

  • ステージ自体SceneLayer です。
  • カメラのレンズ前にかぶせるフィルターUIPostEffectLayer です。

「初期シーン(Initial Scene)」の設定

ACTION GAME MAKER では、シーンは専用の Scene Transition(シーン遷移)システム によって管理されます。
このシステムは、ビジュアルスクリプトと同様の操作方法で、各シーン間の接続関係を定義します。

まず、先ほど作成したシーンを Initial Scene(初期シーン) に設定する必要があります。
これは、ゲーム起動時に最初に表示されるシーンです。


操作手順

  1. 画面上部中央のボタンをクリックし、エディタモードを SceneTransition に切り替えます。

  • このボタンは、中央のエディタウィンドウに表示される内容を切り替えるためのものです。
  1. 画面には空のグリッドが表示されます。
  • 左下の FileSystem(ファイルシステム)パネル から、
    以前に保存したシーン stage1.tscn をこのグリッドにドラッグ&ドロップします。

  1. グリッド内に stage1.tscn が表示されていれば、設定は完了です。

  1. 再度、画面上部中央のボタンをクリックし、2D モードに切り替えて、以前の編集ビューに戻ります。

image

  • これにより、ゲーム起動時に stage1 が最初のシーンとして表示されます。

注意:初期シーンを設定しないとどうなるか?

ACTION GAME MAKER には、core.tscn という特別なシーンがあり、
常にバックグラウンドで動作します。

通常、core.tscn は指定したゲームシーンを読み込み、表示する役割を担います。

初期シーンを設定しない場合、画面には core.tscn のみが表示され、
つまりゲーム起動後は空白の画面が表示されます。

タイルの設定

では、ステージ用のプラットフォームを作成しましょう。

地面と、その上にジャンプできる空中のプラットフォームが必要です。
プラットフォームの作成方法はいくつかありますが、今回は広範囲で形状の多様なステージを作成するため、それに特化したノード:Tile(タイル) を使用します。

タイルは、タイル張りのように小さな画像をグリッド状に並べて、プラットフォームなどの大きな構造物を構築するものです。


タイル画像をFileSystemにインポート

まず、タイル画像を用意しましょう。

以下の画像を右クリックして保存してください。

tile

第1章で説明した通り、GodotエンジンはプロジェクトのFileSystem(ファイルシステム) 内にある素材しか使用できません。
FileSystemは倉庫のようなものと考えてください。アトラクションで使う材料は、まず倉庫に入れておかなければ使えません。

インポート方法は非常に簡単です:
ファイルをエディタにドラッグ&ドロップするだけです。

  1. ダウンロードした画像が保存されているフォルダを開いたままにしておきます。

  2. エディタで左下のFileSystem(ファイルシステム)パネルに移動し、res:// を選択します。

  • インポートされたファイルは、現在選択されているフォルダに配置されます。
  1. tile.png をコンピュータのフォルダからエディタウィンドウ内にドラッグします。


タイルを配置するレイヤーの選択

次に、タイルをどのレイヤー(Layer) に配置するかを決めます。
ここではBaseLayerを使用します。これは地面タイル用のデフォルトレイヤーです。

BaseLayerを展開すると、3つのノードが表示されます:
Base、BaseDecoration、BaseCover
これらはすべてTileMapLayerノードですが、名前が異なります。

なぜ似たようなノードを3つ用意しているのでしょうか?

  • これはタイルを重ねて表示し、前後関係を表現するためです。
  • たとえば、地面タイルの上に松明を置きたい場合があります。
  • レイヤーが1つしかないと、松明を置くと地面タイルが覆われてしまいます。
  • 複数のレイヤーを使うことで、地面と装飾物を同時に表示できます。

では、Baseという名前のノードを選択してタイルを配置しましょう。

画面下部に次のようなメッセージが表示されます:
“No TileSet found. Please create a TileSet in the Inspector.”


TileSetの作成

TileSetは、TileMapLayerが使用するタイルの基本情報を定義します。たとえば:

  • 各タイルのサイズ形状
  • キャラクターとの衝突を有効にするか、そのまま通過させるか

用意したタイル画像は48×48ピクセルの正方形です。
これはプレイヤーが立つプラットフォームになるため、衝突を有効にする必要があります。

  1. Inspector(インスペクター)TileSetを見つけ、
    をクリックしてNew TileSetを選択します。

  1. 次に、TileSetのプロパティを以下のように設定します:
  • Tile Shape(タイル形状):Square
  • Tile Size(タイルサイズ):x = 48 px, y = 48 px

  1. Physics Layers(物理レイヤー) を展開し、+ Add Element をクリックします。

  1. Collision Layer / Collision Mask はデフォルトのままにしておきます。
  • もしインスペクターにPhysics Layer 0のように表示されていれば、
    TileSetの基本設定は完了しています。


説明:Collision Layer と Collision Mask

Godotでは、衝突は以下の2つの設定で判断されます:

  • Collision Layer(衝突レイヤー):このノードが属するグループ
  • Collision Mask(衝突マスク):このノードがどのグループと衝突するか

この仕組みについては第3章で詳しく説明します。


タイルの内容の設定

TileSetを作成すると、下部のメッセージは次のように変わります:
“No source for TileSet”

これは、タイルに画像を指定し、
衝突形状(地面/壁) を設定する必要があることを意味します。

  1. 下部パネルでタブをTileMapからTileSetに切り替えます。

  1. FileSystemパネルからtile.pngをTileSetエディタ左側の黒い領域にドラッグします。

  1. 新しいウィンドウが表示されます。
    タイルが48×48の正方形であるため、
    Tile Size:x = 48, y = 48 に設定してYesをクリックします。

  1. 次に、「Tile FormatをAuto Tileに設定しますか?」と尋ねられます。
    No を選択してください。


説明:Atlas と Auto Tile とは?

Atlas(アトラス) とは、複数の小さな画像(地面、壁、坂など)を
1つの大きな画像にまとめたものです。
エンジンは1つの大きな画像を読み込み、それを複数のタイルに分割することで効率を高めます。

Auto Tile(自動タイル) はACTION GAME MAKER独自の機能の1つです。
特定形式のタイルアトラスを自動的に整理しますが、今回はこの機能は使用しません。


タイルに衝突形状を追加

  1. TileSetエディタで上部のSelectタブに切り替えます。

  • このタブでは、個々のタイルの詳細設定ができます。
  1. 右側でタイル画像をクリックして選択します。
  • 下部のパネルがそのタイルのプロパティ設定に切り替わります。

  1. 下にスクロールしてPhysics > Physics Layer 0を展開します。

  • これは先ほど作成した物理レイヤーです。
  1. Add Polygon Tool(ポリゴン追加ツール)(「+」マークの正方形アイコン)をクリックします。

  • このツールは頂点を追加してポリゴンを描画するためのものです。
  • ポリゴンは複数の点をつなげて形成される形状です。
  1. 緑色の正方形の右上隅をクリックすると、菱形の点が表示されます。

  1. 時計回りに、右下、左下、左上の隅にも同じ操作を繰り返します。

  1. 最後に、最初に置いた点(右上隅)をもう一度クリックします。

  • タイルがオレンジ色になり、正方形全体が衝突領域として設定されたことを示します。

よくある問題の対処法

  • 点の位置が正しくない場合
    Edit Point Tool(点編集ツール)(矢印付きの正方形アイコン)を使って点を移動します。

  • 余分な点を追加してしまった場合
    Delete Point Tool(点削除ツール)(Xマーク付きの正方形アイコン)を使って余分な点を削除します。


:white_check_mark: ここまでで、以下の手順を完了しました:
タイル画像のインポート、TileSetの作成、画像の指定、衝突の設定。
これで、このタイルはキャラクターが立てるプラットフォームとして使用できます。

タイルの配置

タイルの準備が整ったので、実際にステージに配置してみましょう。
目標は、カメラの視野内地面といくつかのプラットフォームを作成することです。


手順

  1. 画面中央の エディタビュー(Editor View) を確認します。

    • 薄い紫色の線で構成された矩形が見えます。
      この矩形は、赤と緑の座標軸が交差する点を中心にしています。
    • この紫色の矩形はカメラの視野範囲を表しています。
      まず、視野を調整して、紫色の矩形全体が画面内に収まるようにしてください。

  1. エディタビュー内で、マウスの中ボタン(ホイールを押す) を長押しします。

    • マウスポインタが十字の矢印に変わります。
    • 中ボタンを押しながらマウスをドラッグして、視野を移動させ、紫色の矩形が完全に画面内に収まるようにします。
    • 紫色の矩形が小さすぎたり大きすぎたりする場合は、マウスホイールでズームして、適切なサイズで表示してください。
  2. 下部パネルで、タブを TileMap(タイル描画) に切り替えます。

    • 以前に作成したタイルが使用可能になっているはずです。

  1. 下部パネルの右側で、タイルをクリックして選択します。

  2. マウスをエディタビュー内に移動すると、
    タイルがマウスポインタの下にプレビュー表示されます。

    • 左クリック:タイルを配置
    • 右クリック:タイルを削除

  • タイルが描画できない場合は、
    エディタがまだ Move Mode(移動モード) になっている可能性があります。
    Select Mode(選択モード) に切り替えてください。

  1. 以下の例に従って、地面とプラットフォームを描画します。

  • 完全に同じように描く必要はありませんが、
    プラットフォームが高すぎると、キャラクターがジャンプで届かなくなる可能性があります。

テスト実行で確認

次に、ゲーム内で実際に動作を確認しましょう。

  • 右上メニューの Run Project(F5) をクリックします。
  • 設定が正しければ、タイルで構成された地面とプラットフォームが正常に表示されるはずです。


トラブルシューティングチェックリスト

タイルが期待通りに表示されない場合は、以下の点を確認してください:

  • タイルは紫色の矩形(カメラの視野範囲) の内側に配置されていますか?
  • SceneTransition で、
    Initial Scene(初期シーン) が正しく stage1.tscn に設定されていますか?

入力マップ(Input Map / 操作設定)の設定

シンプルなレベルの準備が整ったので、
次に通常はプレイヤーキャラクターを作成します。

しかし、その前に、まず 入力マップ(Input Map、操作設定) を設定しましょう。

入力マップの役割は、以下のように定義することです:

  • 「このボタンまたはキーを押すと、このアクションを実行する」

本チュートリアルでは、操作が比較的シンプルなアクションシューティングゲームを作成します。
そのため、現時点では基本的なアクションのみが必要です。

今回は、以下の4つのアクションのみを作成します:

  • Attack(攻撃)
  • Jump(ジャンプ)
  • Move Right(右に移動)
  • Move Left(左に移動)

(その後、スライディング、武器切り替え、はしご登りなどのアクションを追加することもできますが、
まずは最も基本的で不可欠な操作のみを作成します。)


手順

  1. 左上隅の Project(プロジェクト) メニューから、Project Settings(プロジェクト設定) を開きます。

  1. 新しいウィンドウが表示されます。
    上部のタブを General(一般) から Input Map に切り替えます。

  1. “Add New Action” と表示された入力欄に、アクション名を入力します。

  2. Right と入力し、右側の + Add ボタンをクリックします。

  1. 同じ方法で、以下のアクションを追加します:
  • Left
  • Jump
  • Attack

リストが以下の例と一致していれば、正しく設定されています。

  1. 次に、Right 行の右端にある “+”(Add Event) ボタンをクリックします。

  1. “Add Event to Right” という名前のウィンドウが表示されます。
    キーボードの →(右矢印キー) を押してください。

  1. ウィンドウに
    Right または Right (Physical) または Right (Unicode)
    と表示されていれば、設定は成功です。OK をクリックします。

  2. 他のアクションにも同じ手順を繰り返します:

  • Left←(左矢印キー) を割り当てる
  • JumpZ キー を割り当てる
  • AttackX キー を割り当てる

入力マップが以下のスクリーンショットと一致している場合、設定は完了です。

  1. 最後に、Close(閉じる) ボタンをクリックして設定を終了します。

「Game Object(ゲームオブジェクト)」シーンの作成

次に、Game Object(ゲームオブジェクト) のためのシーンを作成します。


操作手順

  1. Stage1 を作成したときと同様に、エディタ上部の 「+」(Add New Scene) ボタンをクリックします。

  2. Create Root Node で、Game Object を選択します。

  1. すると、Create New Game Object(新しいゲームオブジェクトの作成) ウィンドウが表示されます。
    ACTION GAME MAKER では、テンプレートを使ってさまざまな種類のオブジェクトを作成できます。
    以下のように設定してください:
  • Object Name:Player
  • Template:characters
  • Type:2DSprite Character Base
  • Object Group:Player
  • Object to be manipulated by input devices.:On
  • Add CameraTargetSettings Node.:On

  1. 設定が完了すると、複数のノードを含む新しいシーンが生成されます。

  1. このシーンを保存します。
    ファイル名は player.tscn のまま使用できます。

理解 Game Object 的结构

乍一看,Game Object 中包含了大量节点,可能会让人感到有些不知所措。
不过,这些节点大致可以分为三大类


1. 名称中包含 “Settings” 的节点

这类节点用于保存可以被 ACTION GAME MAKER 的可视化脚本(Visual Script)
读取和使用的数据。

通过在这里设置数值,例如 HP、攻击力、移动速度、跳跃力度 等,
就可以在 Visual Script 中直接使用这些参数。


2. 名称中包含 “Collision” 的节点

这类节点用于定义碰撞检测的形状。例如:

  • CollisionShape2D → 用于与墙壁、地面发生碰撞
  • AttackCollision → 攻击判定的碰撞区域
  • HitCollision → 被攻击时用于判定受伤的碰撞区域

3. 与动画相关的节点

  • AnimationPlayer → 用于控制角色的动画
  • Sprite2D → 提供动画中使用的图像素材

在配置 Game Object 时,你将主要使用以上这三类节点。


可视化脚本只能设置在 Game Object 上

ACTION GAME MAKER 的可视化脚本,是通过读取这些节点中的数据来工作的。
正因为如此,可视化脚本只能被设置在 Game Object 节点
(在本例中,就是 Player 节点)。


规划对象的设置内容

在本节中,我们只需要实现移动和跳跃功能。
因此,暂时还不需要配置攻击或受伤相关的内容。

目前我们只需要以下这些要素:

  • 玩家角色的图像
  • 移动与跳跃的动画
  • 移动速度
  • 跳跃力度
  • 移动用的按键设置

所以,在这一部分中,我们将只针对以上这些内容进行配置。

Sprite2D にプレイヤーキャラクターのスプライト画像を設定する

次に、画像を表示するための Sprite2D ノードにプレイヤーキャラクターの画像を適用します。
ここでは、このチュートリアルで提供されているサンプル画像を使用します。


手順

  1. 下の画像を右クリックして、コンピュータに保存してください。

  1. ダウンロードした画像を FileSystem(ファイルシステム) にドラッグしてインポートします。

  1. 画像を表示する Sprite2D ノードを選択します。

  2. 右側の Inspector(インスペクター) パネルで、Texture(テクスチャ) プロパティを見つけます(現在は \u003cempty\u003e と表示されているはずです)。
    インポートした player.png ファイルをこのプロパティにドラッグします。

  1. 画像が表示されますが、9 つのキャラクターがすべて同時に画面に表示されていることに気づくでしょう。

  • これは、このファイルが Sprite Sheet(スプライトシート) であるためです。
    つまり、すべてのアニメーションフレームが 1 つの画像にまとめられている形式です(以前にタイルで説明した Atlas と同様の概念です)。

  • したがって、まずスプライトシートを分割し、Godot に現在表示すべき部分を指示する必要があります。


スプライトシートの分割

  1. Inspector で、Animation(アニメーション) セクションを展開します。

  1. Hframes(横方向のフレーム数)5 に、
    Vframes(縦方向のフレーム数)2 に設定します。
  • これにより、画像全体が 5 × 2 = 10 個の小さなフレームに分割されます。

  1. Inspector の Frame プロパティの上下矢印をクリックしてみてください。

  • クリックするたびに、表示される画像がわずかに変化します。
  • ゲーム内のアニメーションは、このようにして実現されています——
    ページをめくるように、1 フレームずつ画像を切り替えるのです。

解説:なぜ最初のフレームは 0 から始まるのか?

最初のフレームの番号が 0 で、1 ではないことに疑問に思うかもしれません。
プログラミングの世界では、リストや配列は通常 0 から数え始めます。

Godot もこの慣習に従っており、アニメーションフレームの番号も 0 から始まります。

AnimationPlayer ノードでアニメーションを作成する

Godot Engine / ACTION GAME MAKER では、アニメーションは AnimationPlayer ノード を使って作成します。
このシステムは、タイムライン(時間軸) を用いた方式で、ビデオ編集ソフトウェアに似ています。

タイムライン上では、画像や音声などのトラック(軌道) を作成し、
トラック上にキーフレーム(キーフレーム、イベント) を配置します。
時間が進むにつれて、AnimationPlayer は各トラック上のキーフレームを順番に実行します。

これを交響楽の楽譜に例えると:

  • 1秒目にピアノがCの音を演奏する。
  • 同じ時間に、ヴァイオリンがDの音を演奏する。

この例では:

  • トラック(Track)=楽器
  • キーフレーム(Keyframe)=演奏指示

本チュートリアルで作成するアニメーション

本チュートリアルでは、以下の3つの基本的なアニメーションを作成します。

  • Idle(待機) → 入力がないとき
  • Jump(ジャンプ) → ジャンプキーを押したとき
  • Move(移動) → 左右方向入力があるとき

これらを AnimationPlayer を使って作成します。


操作手順

  1. Scene(シーン)パネルで AnimationPlayer ノードを選択します。

  2. 画面下部に新しい Animation(アニメーション)パネル が表示されます。
    (以前のタイルエディタと似ています。)

  3. Animation ボタンをクリックし、New を選択します。

  1. アニメーション名を入力するウィンドウが表示されます。
    まず Idle アニメーションを作成し、名前を入力して OK をクリックします。

  1. これで Idle アニメーションが作成されました。
  • 次に、以前に設定したスプライトフレームを使ってアニメーションを作成します。
  1. Sprite2D ノードを選択します。
  • 9枚のキャラクター画像のうち、Idle は左上の1枚のみを使用します。
  • 左上の画像は Frame 0 なので、Idle アニメーションは Frame 0 を表示すればよいです。

  1. Inspector で、Animation > Frame の値が 0 であることを確認します。
  • その右側の :key:+ ボタン をクリックします。

image

  • これでキーフレームが挿入され、現在のフレーム情報を編集中のアニメーションに記録されます。
  1. ウィンドウが表示されます。
    “Create RESET Track(s)”オフにしたまま、Create をクリックします。


说明:RESET トラックとは?

RESET トラックは、シーンの初期状態を指定するために使用されます。
たとえば、Idle をデフォルト状態に設定できます。

しかし、ACTION GAME MAKER では通常 RESET トラックは使用しないため、ここではオフのままにしておけばよいです。


  1. タイムライン上に Sprite2D: frame というトラックが表示されます。

  • 0秒の位置に、player.png の Frame 0 が設定されています。
  • Idle アニメーションが再生されると、すぐにこの画像が表示されます。
  • Idle は1枚の画像のみを使用するため、これでアニメーションは完了です。
  1. 手順1~8と同じ方法で、Jump アニメーションを作成します。

  • ジャンプアニメーションは1行目の3枚目Frame 2 を使用します。

  • 正しく設定されていると、タイムラインの0秒位置にFrame 2が表示されます。

  1. 最後に、Move(移動) アニメーションを作成します。
  • Idle や Jump とは異なり、Move アニメーションは4枚のフレームを使用します。

    • 2行目の1~4枚目 → Frame 5、6、7、8
  • 動作が滑らかに見えるように、0.2秒ごとにフレームを切り替え、アニメーションをループ再生します。


Move アニメーションの作成

  1. 以前と同じように、Move という名前のアニメーションを作成します。

  • まず0秒の位置に Frame 5 を設定します。

  1. タイムラインの再生ヘッドを 0.2秒 に移動します。
    (時間表示の入力ボックスに「0.2」と直接入力します。)

  1. Sprite2D の Frame を 6 に変更し、:key:+ ボタンをクリックしてキーフレームを挿入します。

  • これで0.2秒の位置にFrame 6が追加されているはずです。

  1. 同じ操作を繰り返します。
  • 0.4秒Frame 7 を設定します。

  • 0.6秒Frame 8 を設定します。

  • これで4枚のフレームがすべてタイムラインに配置されました。

  1. アニメーションの長さを調整します。
  • Animation パネルの右上に、1と表示されている入力ボックスがあります(デフォルトでは1秒)。
  • 4枚のフレームを0.2秒ごとに切り替えるため、0.8に変更します。

  • これにより、アニメーションがループする際にカクツかないようにします。
  1. ループ再生を有効にします。
  • 時間入力ボックスの横にあるループボタン(円形の矢印)をクリックします。

  • これでアニメーションが自動的にループ再生されます。

说明:Loop と Ping-Pong Loop の違い

  • 1回クリック:通常のループ(アニメーションは最初から最後まで再生し、再び最初から始まる)。
  • 2回クリック:ピンポンループ(Ping-Pong Loop)
    (アニメーションは正方向に再生 → 逆方向に再生 → 再度正方向に再生)

image


  1. すべての設定が完了したら、Play(再生) ボタンをクリックしてアニメーションをテストします。
  • アニメーションが滑らかに再生されていれば、完了です!

故障診断

  • アニメーションが正しく表示されない場合:

    • タイムライン上の各キーフレームを順に選択し、その Value(値) を確認します。
    • 順序が 5 → 6 → 7 → 8 になっているか確認します。
    • 違っている場合は、手動で値を修正できます。
  • また、以下の点も確認してください:

    • アニメーションがループ(Loop) に設定されているか。
    • アニメーションの長さが 0.8秒 に設定されているか。

:white_check_mark: これで、プレイヤー役のキャラクターに
Idle、Jump、Move の3つのアニメーションを成功裏に作成しました。

アニメーションセットの作成

ACTION GAME MAKERには、「アニメーションセット」というシステムがあり、
キャラクターの移動方向に応じて、自動的に適切なアニメーションに切り替えることができます。

アニメーションセットでは、最大8つの方向にアニメーションを割り当てることができ、
一度アニメーションセットを選択するだけで、
キャラクターが右、左、上などに移動するたびに、アニメーションが自動的に切り替わります。

今回のゲームでは、の2つの移動方向のみが必要です。
現在、Idle(アイドル)Jump(ジャンプ)Move(移動)の3つのアニメーションを作成しており、
これらはすべて
右向き
のアニメーションです。

しかし、システムでは**アニメーションの自動反転(Auto Flip)**機能が有効になっています。
つまり、左向きのアニメーションを別途作成する必要はなく、
システムが右向きのアニメーションを左右反転して表示してくれます。

また、この場合(左右移動のみで、反転で左向きアニメーションを実現できる)には、
一括インポート機能を使用することで、
アニメーションセットの設定を迅速に完了できます。


操作手順

  1. **Scene(シーン)**パネルで、Playerノード(つまりGameObjectノード)を選択します。

image

  1. **Inspector(インスペクター)**で、Select Animation Playerボタンをクリックします。

  2. ノード選択ウィンドウが表示されるので、AnimationPlayerノードを選択します。

  1. 次に、**Bulk Load Animations(一括読み込み)**ボタンをクリックします。

  1. 設定が正しく完了したか確認するために、Animation Set領域を展開します。

  2. 操作が正しければ、Animation SetにJump、Idle、Moveの3つのアニメーションが表示されているはずです。


故障対処

  • アニメーションがAnimation Setに表示されない場合:

    • Assign AnimationPlayerに戻り、
      再度AnimationPlayerノードを指定してください。

プレイヤー設定の調整

アニメーションの作成が完了したので、次はプレイヤーの各種設定を行います。

以下の3つの作業を行います:

  1. 移動に使用するキーの設定
  2. 移動速度とジャンプ力の調整
  3. 衝突形状(Collision Shape)の調整、キャラクターの体サイズに合わせる

移動キーの設定

まず、以前に設定した入力アクションを使ってキャラクターの移動キーを指定します。

  1. Scene(シーン) パネルで MoveAndJumpSettings ノードを選択します。

  1. Inspector(インスペクター) で以下の設定を行います:
  • Left Move Key → Left
  • Right Move Key → Right


移動速度とジャンプ力の調整

次に、キャラクターの移動速度とジャンプ力を調整し、ゲーム操作に適した状態にします。

  1. MoveAndJumpSettings ノードが選択された状態で、Inspectorを確認します。

  2. Horizontal Speed(水平速度)100 から 300 に変更します。

  • これにより、方向キーを1秒間押したときにキャラクターは 300ピクセル 移動します。

  1. 下の方にある Jump Force(ジャンプ力) を見つけます。
  • これを 500 から 700 に変更します。

  • これは、ジャンプキーを押したときにキャラクターが 700ピクセル/秒 の速度で上に跳躍することを意味します。

衝突形状(Collision Shape)の調整

CollisionShape2D ノードは、キャラクターが地面や他の物体と衝突する際の形状を定義します。
現在の形状は小さすぎ(キャラクターの頭よりも小さい)、
キャラクターの体が地面に「沈んでしまう」現象が発生しています。

これをキャラクター全体のサイズに合わせて調整する必要があります。

  1. Scene(シーン) パネルで CollisionShape2D ノードを選択します。
  • オレンジ色の点で囲まれた小さな青い長方形が、現在の衝突形状です。

:warning: ここでキャラクターが JumpMove のアニメーションフレームを表示している場合、
まず AnimationPlayerIdle に戻してください。

  • これにより、衝突形状をキャラクターの体に合わせて調整しやすくなります。
  1. 長方形の4つの角にあるオレンジ色の制御点をクリックしてドラッグし、サイズを調整します。
  • 衝突形状をキャラクターの全身を覆うように調整します。


:white_check_mark: 上記の設定を完了すると、
あなたのキャラクターは入力に正しく反応し、
適切な速度で移動・ジャンプでき、
地面との衝突時に沈み込む問題も解消されます。

可視化スクリプト(Visual Script)を使ってキャラクターを動かす

これで準備はすべて完了しました ——
それでは、可視化スクリプト(Visual Script) を使ってプレイヤーキャラクターを実際に動かしてみましょう。

まず、Player に Visual Script を追加(アタッチ)する必要があります。


可視化スクリプト(Visual Script)の追加

  1. Scene(シーン) パネルで、Player ノード(GameObject)を選択します。

  2. :scroll:+(Attach Script、スクリプトの追加) ボタンをクリックします。

  1. 新しいウィンドウが表示され、VisualScriptGDScript(標準的なプログラミングスクリプト)のどちらを追加するか尋ねられます。
  • ここでは Player ノード(GameObject) を選択しているため、
    VisualScript が自動的に選択されます。

  • そのまま Create(作成) ボタンをクリックしてください。
  1. エディタービューが自動的に Script(スクリプト) タブに切り替わります。
  • 2つのボックスが表示されます:State001AnyState
  • これが Visual Script の作業エリア です。


以前のビューに戻る

以前の編集画面に戻りたい場合は、
上部のタブを 2D に切り替えるだけです。

Scene Transition(シーン切り替え)の部分で説明したように、
上部のタブはエディターが現在表示している内容を切り替えるために使用されます。

image

状態の作成(States)

どの状態が必要かを決める

第1章で説明したように、ACTION GAME MAKERのビジュアルスクリプトは以下の手順で構築されます:

  1. 角色の**状態(State)**に行動を追加する
  2. 条件に応じてこれらの状態を**接続(切り替え)**する

このチュートリアルでは、キャラクターがレベル内で歩いたりジャンプしたりするだけなので、以下の3つの状態が必要です:

  • Idle(待機)
  • Move(移動)
  • Jump(ジャンプ)

これらの状態を適切な条件で接続・切り替えることで、プレイヤーキャラクターの基本的な移動動作を実現できます。

まず、Idle、Move、Jumpの3つの状態を準備し、それぞれにアニメーションと行動を割り当てます。すでに存在しているState001は、そのままIdle状態として使用できます。


Idle状態の作成

  1. Script(スクリプト)ウィンドウでState001を選択します。

  2. Inspectorで、Titleを「State001」からIdleに変更します。

  1. Animation to assign > Animation Selectで、空白のフィールドをクリックし、Idleを選択します。

  • これにより、キャラクターがIdle状態にあるときに、Idleアニメーションが再生されます。

Move状態の作成

Move状態は新しい状態として作成する必要があります。

  1. Idle状態の右側の空白領域を右クリックします。

  2. メニューから**Add State(状態の追加)**を選択します。

  1. 新しい「State001」が表示されます。TitleMoveにリネームします。

  2. **Animation Category(アニメーション分類)**で、Moveを選択します。

  • これにより、キャラクターがMove状態にあるときに、Moveアニメーションが再生されます。

Jump状態の作成

Jump状態にはアニメーションだけでなく、実際にジャンプ動作を実行する必要があります。

  1. IdleMove状態の下に、新しい状態を作成します。

  2. 以前と同じように、TitleJumpにし、AnimationJumpに設定します。

  1. **Action Settings(アクション設定)**領域を展開します。
  • Jumpオプションにチェックを入れます。

  • これにより、キャラクターがJump状態に入ると、自動的にジャンプ動作が実行されます。

なぜMove状態に「移動動作を実行する」設定がないのか?

プレイヤーの入力に基づく移動操作は、MoveAndJumpSettingsで設定されたキー割り当てによって処理されています。

このシステムはすべての状態に適用されるため、Move状態自体に移動を実行するための追加のアクション設定は必要ありません。


:white_check_mark: ここまでで、Idle、Move、Jumpの3つのコアな状態を成功裏に作成・設定しました。
これらはキャラクターの基本的な動作を駆動するために使用できます。

リンク(Link)を使って各状態を接続する

これで3つの状態を作成したので、次は**リンク(Link)**を使ってそれらを接続し、キャラクターが状態間をスムーズに切り替えるようにします。


状態切り替えの条件を考える

このゲームの基本的なロジックは以下の通りです:

  • 左/右キーを押す → Move
  • ジャンプキーを押す → Jump
  • 入力がない → Idle

つまり:

  • 左/右キーを押したとき Idle → Move、すべてのキーを離したとき Move → Idle
  • Idle状態でジャンプキーを押すと Idle → Jump
  • 移動中にジャンプキーを押すと Move → Jump
  • 落下(キャラクターの底部がタイルと接触)したとき Jump → Idle

:backhand_index_pointing_right: では、Jump → Move のリンクは必要でしょうか?
実は必要ありません。
落下時に移動キーを押したままの場合、
すぐに Idle → Move がトリガーされるため、Jumpから直接Moveに遷移する必要はありません。


Idle と Move を接続する

  1. Idle 状態を右クリックし、**Add Link(リンクの追加)**を選択します。

  1. Idle から Move 状態へドラッグして接続します。

  • これで Idle と Move は接続されました。
  • 次に、左/右キーを押したときに Move に切り替える条件を設定します。
  1. 新しく作成したリンクを選択し、Inspectorで Trigger On Input をチェックします。

  1. Input Operation List(Array[InputCondition]) を展開します。

  2. + Add Input をクリックします。

  1. \u003cempty\u003e が表示されるので、それをクリックして New Input Condition を選択します。

  1. \u003cempty\u003eInput Condition に変わり、展開します。

  2. 以下の設定を行います:

  • Input Target:Four Any Input Keys
  • Up Key:None
  • Down Key:None
  • Left Key:Left
  • Right Key:Right
  • Input Method:Being Pressed

  1. これで、Left または Right キーを押していると、
    キャラクターは Idle → Move に切り替わります。

  2. 次に Move → Idle のリンクを作成します。
    Move を右クリックし、Add Link を選択します。

  3. 新しく作成されたリンクを選択します。

  1. Inspectorで Trigger On No input をチェックします。

  • これで、入力がない状態でキャラクターは Idle に戻ります。

プレイヤーをステージに配置してテストする

ここまでで、キャラクターは地面で左右に移動できるはずです。
stage1.tscn に Player ステージを配置してテストしましょう。

  1. エディタービューを Script から 2D に切り替えます。

  2. Player ステージを保存します:
    player タブを右クリックし、Save Scene を選択します。

  1. stage1.tscn タブに切り替えます。

image

  1. Scene パネルで Base(TileMapLayer) を選択します。

  1. FileSystemから player.tscn をドラッグしてステージに配置し、地面に置きます。

  2. Player が BaseLayer の子ノードであることを確認します。

  • レイヤーが正しくない場合は、Scene パネルでドラッグして調整します。
  • 位置が不適切な場合は、Move Mode を使って調整できます。
  1. 右上隅の Run Project(F5) をクリックします。

  2. すべて正常に動作すれば、キャラクターは以下のようになります:

  • Left / Right を押すと移動
  • キーを離すと停止

トラブルシューティング

  • キャラクターが動かない
    → MoveAndJumpSettings で入力キーが正しく設定されているか確認してください。

  • キャラクターが動くがアニメーションが切り替わらない
    → Idle → Move のリンクと、Move 状態のアニメーション設定を確認してください。

  • キャラクターが Idle に戻れない
    → Move → Idle のリンクの条件が正しく設定されているか確認してください。

:warning: エラーメッセージ:ID is not set in CameraTargetSettings.
これは CameraTargetSettings が存在するが設定されていないためです。
第4章でカメラの追従を設定するので、今はこのメッセージを無視しても安全です。


Idle、Move、Jump を接続する

次に、Jump 状態も接続します。

  1. player タブに戻り、エディタービューを Script 視図に切り替えます。

image

  1. Idle を右クリックし、リンクを追加して Jump に接続します。

  2. そのリンクを選択し、Trigger On Input を有効にします。

  1. Input List → + Add Input → New Input Condition をクリックします。

  1. 以下の設定を行います:
  • Input Target:Registered key
  • Input Key:Jump
  • Condition:Moment pressed

  • これで、Idle 状態で Jump キーを押すと Jump に切り替わります。
  1. 次に Move → Jump を接続します。
    条件が同じなので、Idle → Jump のリンクを再利用できます。

  2. Idle → Jump リンクを右クリックし、Copy を選択します。

  1. Move 状態を右クリックし、Paste Link を選択します。

  1. 新しいリンクを Jump にドラッグして接続します。

  2. Move → Jump リンクを選択し、条件が正しく設定されているか確認します(Jump キーが押されていること)。


Jump から Idle に戻るリンクを接続する

  1. Jump 状態を右クリックし、リンクを追加して Idle に接続します。

  2. 入力に基づかない切り替えなので、Inspectorで + Add Condition をクリックします。

  1. 表示されたウィンドウで ContactWithTile を選択します。

  2. 条件を Incoming Contact Direction → Bottom に設定します。

  • これは、キャラクターの底部がタイルと接触した(着地した)ときに切り替えることを意味します。
  1. リンクが以下の状態であれば、設定完了です。


テスト実行

Run Project(F5) をクリックします。

  • Idle または Move 状態で Z を押す → キャラクターがジャンプするはず
  • 着地後、キャラクターは Idle に戻るはず

トラブルシューティング

  • ジャンプできない
    → Idle → Jump と Move → Jump のリンクを確認し、
    Jump 状態で Jump Action が有効になっているか確認してください。

  • 着地しても Idle に戻らない
    → Jump → Idle のリンクを確認し、
    「ContactWithTile(Bottom)」の条件が設定されているか確認してください。


:white_check_mark: これで、ビジュアルスクリプトを使って、キャラクターがスムーズに待機、移動、ジャンプできるようになりました!

第2章 レビュー

第2章では、Game Scene(ゲームシーン)Game Object(ゲームオブジェクト) の概念を学び、
それぞれにレベルとプレイヤー役を制作しました。

  • Game Scene では、レイヤー(Layer) の概念を学び、
    そして タイル(Tile)インポートして配置する方法を学びました。

  • Game Object では、画像のインポート、アニメーションの作成、各種設定の調整、可視化スクリプト(Visual Script)の追加方法を学びました。

このようなワークフローは、ほぼすべてのゲーム開発に適用できます。
したがって、今後のプロジェクトで困ったときは、
このステップを振り返り、比較することで、思考の整理ができます。

ここまでで、あなたは ACTION GAME MAKER の基本操作とコアコンセプト を習得しました。
第3章 では、さらに一歩進んで、
弾の発射敵キャラクターの作成 を加えることで、
ゲームをより本格的な完成形に近づけていきます。

:backhand_index_pointing_right: 第3章はこちらから

「いいね!」 1