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

「ダメージを受ける(Take Damage)」スクリプトの作成

プレイヤーが敵の攻撃に当たった際には、「Take Damage(ダメージを受ける)」状態に切り替える必要があります。
この状態では、プレイヤーは以下のようになります:

  • 短時間の間、操作ができない
  • 向いている方向の反対方向に軽く後ろに吹き飛ばされる
  • 短い遅延の後、ダメージを受ける前の状態に戻る

ここで問題となるのは:
どの状態から「Take Damage」に切り替えるべきか?

プレイヤーにはすでに7つの状態があるため、
各状態から個別にリンクを作成するのは非常に面倒です。

このとき、AnyState(任意状態)が活躍します。


AnyStateとは?

その名の通り、「任意の状態」を意味します。
AnyStateから作成されたリンクは、条件が満たされれば、
現在どの状態にいても、切り替わるという仕組みです。

さらに、特別な実行アクションであるTransferToActionがあり、
これはキャラクターを通常の状態遷移を無視して
現在の状態に入る前の状態に直接戻すことができます。

したがって、AnyStateは、
ダメージ、硬直、吹き飛ばしなどの一般的な反応処理に非常に適しています。


「Take Damage」状態の作成

「Take Damage」状態では、以下の設定を行います:

  • 角色の移動を禁止
  • 向きの変更を禁止
  • 角色を後方(向いている方向の反対方向)に移動
  • 0.2秒後に以前の状態に戻る

操作手順

  1. AnyStateの右側の空白領域を右クリックし、Add Stateを選択します。

  2. 新しく作成されたState001Take Damageに名前を変更します。

  3. Select AnimationDamageTakenを選択します。

  1. InspectorでAction Settingsを展開します。

  2. **Ignore Input(入力無視)Ignore Facing Direction Change(向き変更無視)**にチェックを入れます。

  • これにより、ダメージ反応中はプレイヤーが移動も向きを変えたりもできないようにします。
  1. + Add Executable Actionをクリックします。

  2. MoveInDisplayDirectionを選択します。

  3. **Opposite Direction(反方向)**にチェックを入れ、Addをクリックします。

  • これにより、キャラクターが後ろに吹き飛ばされます。

  1. 再度**+ Add Executable Action**をクリックします。

  2. Waitを選択します。

  3. Value0.2秒に設定します(半角数字で入力してください)。

  • これは吹き飛ばし効果が0.2秒続くことを意味します。

  1. 再度**+ Add Executable Action**をクリックします。

  2. TransferToActionを選択し、Addをクリックします。

  1. 実行アクションの順序が下図の通りであれば、「Take Damage」状態の作成は完了です。


AnyState → 「Take Damage」の接続

AnyStateからリンクを作成する方法は、通常の状態とまったく同じです。

  1. AnyStateを右クリックし、Add Linkを選択します。

  2. リンクをTake Damage状態に接続します。

  3. Inspectorで**+ Add Condition**をクリックします。

  1. ContactWithAttackAreaを選択します。

  2. Select All Sidesにチェックを入れ、Addをクリックします。

  1. これにより、プレイヤーがどの方向からでも敵の攻撃判定エリアに触れると、
    すぐにTake Damage状態に切り替わるようになります。


テスト設定

ゲームを実行してテストします。
プレイヤーが敵と衝突した際には、以下の挙動が発生する必要があります:

  • プレイヤーが短時間操作不能になる
  • 角色が点滅する(無敵状態が発動)
  • 角色が軽く後ろに吹き飛ばされる

故障診断チェックリスト(Troubleshooting Checklist)

  • 点滅効果がない
    BaseSettings内の無敵時間の設定を確認してください

  • まったくダメージ反応がない
    → AnyState → Take Damageのリンクの条件が正しく設定されているか確認してください

  • 反応はあるが挙動がおかしい
    → 「Take Damage」状態内の実行アクションの順序と設定を再確認してください

第3章 レビュー

この章では、以下の内容を学びました:

  • さまざまなタイプのゲームオブジェクトを作成することで、オブジェクトの作成プロセスを繰り返し練習した
  • 衝突レイヤー(Collision Layers)衝突マスク(Collision Masks) の概念
  • ダメージの受け方と無敵時間(Taking damage & Invincibility) の処理
  • AnyState の使い方

しかし、攻撃とダメージシステムは正常に動作しているものの、ゲームにはまだいくつかの欠点があります:

  • 画面が小さく見える
  • 音効果がない
  • 「ゲームオーバー(Game Over)」メカニズムがない

現時点では、これは「完全なゲーム」として感じられるものではありません。

第4章 では、さらに制作を進め、本格的なゲーム機能を備えたものにしていきます。

:backhand_index_pointing_right: 関連リンク: