攻撃とヒットの当たり判定の調整
まず、現在大きすぎるHitCollisionのサイズを調整しましょう。
また、ロックマンスタイルのシステムを使用しているため、プレイヤーの本体自体に攻撃用の当たり判定は必要ありません。(近接攻撃を作成する場合は保持しますが、このチュートリアルでは近接戦闘は追加しません。)
したがって、AttackArea2D を完全に削除します。
-
HitCollisionを選択します。
-
角をドラッグしてサイズを変更し、壁の当たり判定ボックスよりわずかに大きくなるように調整します。
-
AttackArea2Dを右クリックします。
-
メニューの下部にある削除を選択します。
-
AttackArea2D とその子ノードである AttackCollisionを削除するかどうかを確認するウィンドウが表示されます。OKをクリックして削除します。
「ダメージを受ける」スクリプトの作成
プレイヤーが敵の攻撃に当たったとき、「ダメージを受ける」状態に遷移する必要があります。
この状態では、プレイヤーは短時間動けなくなり、少し後方(向いている方向の反対側)にノックバックし、短い遅延の後に前の状態に戻ります。
では、どの状態からこの遷移を行うべきでしょうか?
プレイヤーにはすでに7つの状態があるため、すべてからリンクを作成するのは面倒です。
ここでAnyStateボックスが役立ちます。
AnyStateとは
名前の通り、AnyStateは「どの状態からでも」という意味です。
AnyStateから作成されたリンクは、現在の状態に関係なく、条件が満たされれば遷移します。
また、遷移前の状態に戻すことができる特別な実行アクションとして**「TransferToAction」**があり、通常のリンクを無視して動作します。
これにより、AnyStateはダメージ反応などの処理に理想的です。
「ダメージを受ける」状態の作成
「ダメージを受ける」状態では、以下を設定します。
- 移動を無効にする。
- 向いている方向の変更を無効にする。
- プレイヤーを後方(向いている方向の反対側)に移動させる。
- 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秒を入力します(半角数字で入力してください)。
-
さらに、+ Add Executable Actionをクリックします。
-
TransferToActionを選択し、Addをクリックします。
-
上記の順序でアクションが配置されていれば、「ダメージを受ける」状態の作成は完了です。
AnyStateから「Take Damage」へのリンク作成
AnyStateからのリンク作成は、他の状態からの場合と同じ方法で行います。
-
AnyStateを右クリックし、Add Linkを選択します。
-
Take Damage状態に接続します。
-
Inspectorで**+ Add Condition**をクリックします。
-
ContactWithAttackAreaを選択します。
-
Select All Sidesを有効にし、Addをクリックします。
-
これで、プレイヤーがどの方向から敵の攻撃ヒットボックスに衝突しても、「Take Damage」状態に遷移します。
設定のテスト
テストプレイを実行し、ダメージ反応が正しく機能するか確認します。
敵に衝突したとき、プレイヤーは以下のようになります。
- 一時的に操作不能になる。
- 点滅する(無敵設定によるもの)。
- 少しノックバックする。
トラブルシューティングチェックリスト
- 点滅しない → BaseSettings内の無敵設定を確認してください。
- ダメージ反応がない → リンク条件が正しく設定されているか確認してください。
- 反応は起こるが動作が正しくない → Take Damage状態の内容を再確認してください。
第3章のレビュー
この章で学んだことは以下の通りです:
- さまざまなタイプのゲームオブジェクトを作成することで、オブジェクト作成の反復練習
- 衝突レイヤーと衝突マスクの概念
- ダメージを受けることと無敵状態
- AnyStateの使用方法
しかし、攻撃とダメージのシステムは動作するようになりましたが、ゲームにはまだいくつかの欠点があります:画面が狭く感じられ、サウンドがなく、ゲームオーバーの機能もありません。
現状では、完全なゲームという感じがしません。
第4章では、これを実際のゲームとして適切に機能するように取り組んでいきます。
「いいね!」 1