Skip to content

[important] 敵からの攻撃によるダメージ処理の実装 #41

@Lazyturtle0852

Description

@Lazyturtle0852

概要

マージ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. プレイヤーを未乗っ取り状態でスタートする

  2. 敵の突進攻撃をプレイヤーにヒットさせる

  3. 結果: ダメージ処理が発生せず、何も起きない
    (乗っ取り状態でも同様に、攻撃を受けた際の乗っ取り解除が発生しない)


期待する挙動

  • 未乗っ取り状態で攻撃を受けた場合

    • ダメージ判定 → ゲームオーバー(シーン遷移)

  • 乗っ取り状態で攻撃を受けた場合

    • 乗っ取り解除 → プレイヤー単体に戻る


対応方針(技術メモ)

  • ダメージ判定の入口をどこに持つか検討する必要がある

    • 案1: プレイヤー側の OnCollisionEnter2D / OnTriggerEnter2D で「敵の攻撃オブジェクト」との衝突を検知

    • 案2: 攻撃側(敵の突進ヒットボックス、弾など)がプレイヤーに当たった時にダメージ処理を呼ぶ

  • ゲームオーバー処理は TestStageController.OnPlayerDead() 相当の共通処理として切り出すか、既存をそのまま呼ぶか要検討


補足

  • 元 Issue「未乗っ取り状態で敵の突進を受けてもダメージ判定が発生しない」は、本 Issue の一部ケースに該当する

  • 球(弾)については、現状コードベースに弾のオブジェクト・スクリプトが存在しない可能性あり
    → 攻撃種別の実装状況は別途確認が必要

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions