-
Notifications
You must be signed in to change notification settings - Fork 0
Description
概要
マージ6時点、プレイヤーへのダメージ処理は「ゲージが0になった場合」にのみ発動しており、敵からの攻撃(突進、球の衝突など)によるダメージ処理がそもそも実装されていない。
詳細
現状の実装
ゲージ0でのゲームオーバー
TestStageController.cs がslider.value <= 0を監視し、OnPlayerDead()でGameOverSceneへ遷移 → 実装済みプレイヤー → 敵の衝突
PlayerController.cs のOnCollisionEnter2D/OnTriggerEnter2Dは「プレイヤーが Dashing 状態で敵に当たる」場合のみ処理(乗っ取り試行)敵 → プレイヤーの衝突
プレイヤーが敵の攻撃(突進、球など)を受けた際の処理が存在しない
未実装のダメージ処理
| プレイヤー状態 | 攻撃種別 | 期待する挙動 |
|---|---|---|
| 乗っ取り中 | 球の衝突、敵の突進など | 乗っ取り解除 → プレイヤー単体になる |
| 非乗っ取り | 球の衝突、敵の突進など | ゲームオーバー(既存の GameOver を呼ぶ) |
ダメージ処理の定義(期待仕様)
プレイヤーが敵を乗っ取り中に攻撃を受けた場合
乗っ取り状態を解除し、プレイヤー単体に戻る
HijackSystemController.ReleaseHijackedEnemy() の呼び出しで対応可能
プレイヤーが敵を乗っ取っていない状態で攻撃を受けた場合
ゲームオーバー処理を発動する
既存の TestStageController.OnPlayerDead() と同等のシーン遷移処理を再利用
対象となる攻撃種別(例)
敵の突進攻撃
EnemyController.AttackToTarget による直線突進
球(弾)との衝突
EnemyDataに Shooter タイプあり(弾の実装状況は未確認)
その他、将来追加されるプレイヤーへの攻撃
※ 上記以外の攻撃種別があれば本 Issue に追記する
再現手順
プレイヤーを未乗っ取り状態でスタートする
敵の突進攻撃をプレイヤーにヒットさせる
結果: ダメージ処理が発生せず、何も起きない
(乗っ取り状態でも同様に、攻撃を受けた際の乗っ取り解除が発生しない)
期待する挙動
未乗っ取り状態で攻撃を受けた場合
ダメージ判定 → ゲームオーバー(シーン遷移)
乗っ取り状態で攻撃を受けた場合
乗っ取り解除 → プレイヤー単体に戻る
対応方針(技術メモ)
ダメージ判定の入口をどこに持つか検討する必要がある
案1: プレイヤー側の
OnCollisionEnter2D/OnTriggerEnter2Dで「敵の攻撃オブジェクト」との衝突を検知案2: 攻撃側(敵の突進ヒットボックス、弾など)がプレイヤーに当たった時にダメージ処理を呼ぶ
ゲームオーバー処理は
TestStageController.OnPlayerDead()相当の共通処理として切り出すか、既存をそのまま呼ぶか要検討
補足
元 Issue「未乗っ取り状態で敵の突進を受けてもダメージ判定が発生しない」は、本 Issue の一部ケースに該当する
球(弾)については、現状コードベースに弾のオブジェクト・スクリプトが存在しない可能性あり
→ 攻撃種別の実装状況は別途確認が必要