「ダメージを受ける(Take Damage)」スクリプトの作成
プレイヤーが敵の攻撃に当たった際には、「Take Damage(ダメージを受ける)」状態に切り替える必要があります。
この状態では、プレイヤーは以下のようになります:
- 短時間の間、操作ができない
- 向いている方向の反対方向に軽く後ろに吹き飛ばされる
- 短い遅延の後、ダメージを受ける前の状態に戻る
ここで問題となるのは:
どの状態から「Take Damage」に切り替えるべきか?
プレイヤーにはすでに7つの状態があるため、
各状態から個別にリンクを作成するのは非常に面倒です。
このとき、AnyState(任意状態)が活躍します。
AnyStateとは?
その名の通り、「任意の状態」を意味します。
AnyStateから作成されたリンクは、条件が満たされれば、
現在どの状態にいても、切り替わるという仕組みです。
さらに、特別な実行アクションであるTransferToActionがあり、
これはキャラクターを通常の状態遷移を無視して、
現在の状態に入る前の状態に直接戻すことができます。
したがって、AnyStateは、
ダメージ、硬直、吹き飛ばしなどの一般的な反応処理に非常に適しています。
「Take Damage」状態の作成
「Take Damage」状態では、以下の設定を行います:
- 角色の移動を禁止
- 向きの変更を禁止
- 角色を後方(向いている方向の反対方向)に移動
- 0.2秒後に以前の状態に戻る
操作手順
-
AnyStateの右側の空白領域を右クリックし、Add Stateを選択します。
-
新しく作成されたState001をTake Damageに名前を変更します。
-
Select AnimationでDamageTakenを選択します。
-
InspectorでAction Settingsを展開します。
-
**Ignore Input(入力無視)とIgnore Facing Direction Change(向き変更無視)**にチェックを入れます。
- これにより、ダメージ反応中はプレイヤーが移動も向きを変えたりもできないようにします。
-
+ Add Executable Actionをクリックします。
-
MoveInDisplayDirectionを選択します。
-
**Opposite Direction(反方向)**にチェックを入れ、Addをクリックします。
- これにより、キャラクターが後ろに吹き飛ばされます。
-
再度**+ Add Executable Action**をクリックします。
-
Waitを選択します。
-
Valueを0.2秒に設定します(半角数字で入力してください)。
- これは吹き飛ばし効果が0.2秒続くことを意味します。
-
再度**+ Add Executable Action**をクリックします。
-
TransferToActionを選択し、Addをクリックします。
- 実行アクションの順序が下図の通りであれば、「Take Damage」状態の作成は完了です。
AnyState → 「Take Damage」の接続
AnyStateからリンクを作成する方法は、通常の状態とまったく同じです。
-
AnyStateを右クリックし、Add Linkを選択します。
-
リンクをTake Damage状態に接続します。
-
Inspectorで**+ Add Condition**をクリックします。
-
ContactWithAttackAreaを選択します。
-
Select All Sidesにチェックを入れ、Addをクリックします。
- これにより、プレイヤーがどの方向からでも敵の攻撃判定エリアに触れると、
すぐにTake Damage状態に切り替わるようになります。
テスト設定
ゲームを実行してテストします。
プレイヤーが敵と衝突した際には、以下の挙動が発生する必要があります:
- プレイヤーが短時間操作不能になる
- 角色が点滅する(無敵状態が発動)
- 角色が軽く後ろに吹き飛ばされる
故障診断チェックリスト(Troubleshooting Checklist)
-
点滅効果がない
→ BaseSettings内の無敵時間の設定を確認してください -
まったくダメージ反応がない
→ AnyState → Take Damageのリンクの条件が正しく設定されているか確認してください -
反応はあるが挙動がおかしい
→ 「Take Damage」状態内の実行アクションの順序と設定を再確認してください









