← Back to list
INS-281
バグ:キャラクターが攻撃をしなくなる
StatusDone
TeamInstansys
Assigneeyasuhisa.hiraga@instansys.co.jp
PriorityNo priority
Created2025/12/29 05:40
Completed2026/02/16 04:56
Archived2026/02/24 02:38
Bug
Description
エネミーがバリア付近までいくと、キャラクターが攻撃をしなくなる
バグというか設計上の問題。
Comments (3)
yasuhisa.hiraga@instansys.co.jp2026/02/12 00:25
調査結果
根本原因: FIGHTER_LEFT_LIMIT_LINE_X = 310 による左側制限が、全てのファイターのターゲット検索に適用されている。
問題の流れ
エネミーがバリア付近まで接近すると position.x < 310 になり:
- 攻撃ターゲット検索 (findNearestLivingEnemyCenterForFighter) がそのエネミーをフィルタリングで除外
- 移動ターゲット検索 (findFighterMoveTarget) も同様に除外
- ロックオン中の敵ですら X < 310 だと無視される
- ファイターは有効なターゲットがないと判断し、idle のまま何もしなくなる
関連コード
┌────────────────────────────┬────────────────────────────────────────────────────────┬────────────┐
│ 箇所 │ ファイル │ 行 │
├────────────────────────────┼────────────────────────────────────────────────────────┼────────────┤
│ 左側制限の定数 │ packages/shared/src/constants/battle.ts │ L5 │
├────────────────────────────┼────────────────────────────────────────────────────────┼────────────┤
│ 左側制限チェック関数 │ apps/client/src/hooks/battle-logic/common.ts │ L377-379 │
├────────────────────────────┼────────────────────────────────────────────────────────┼────────────┤
│ ファイター用ターゲット検索 │ apps/client/src/hooks/battle-logic/common.ts │ L407-427 │
├────────────────────────────┼────────────────────────────────────────────────────────┼────────────┤
│ 攻撃ターゲット取得 │ apps/client/src/hooks/battle-logic/character-entity.ts │ L813-835 │
├────────────────────────────┼────────────────────────────────────────────────────────┼────────────┤
│ 移動ターゲット取得 │ apps/client/src/hooks/battle-logic/character-entity.ts │ L2351-2366 │
└────────────────────────────┴────────────────────────────────────────────────────────┴────────────┘
設計の意図と問題点
左側制限は「ファイターが後衛エリアまで追いかけないようにする」意図で設計されたものですが、敵が自発的にバリア付近まで来た場合でも攻撃で
なくなるという副作用があります。
yasuhisa.hiraga@instansys.co.jp2026/02/12 01:50
前衛キャラの左側制限(バリアまでしか行かない(x310))を撤廃し、ちゃんと向いている方向で弾が当たるか判定して攻撃するようにした。
この修正したことで、キャラクターがバリア内に入ってしまう、ということは基本的にはなさそう。敵がバリアにひっついて止まり、それを追いかける形でしかバリアの方に向かわないため。
ノックバック攻撃で入る可能性があるが、それはバリアが健在(breakされてない)状態であればバリアで止まるように制限をかけた
yasuhisa.hiraga@instansys.co.jp2026/02/12 01:56
エネミーは…
clampEnemyX は FIGHTER_LEFT_LIMIT_LINE_X(310)で制限されています。
バリアは x: 120, radius: 220 なので右端は x = 340 付近です。つまり:
- エネミーは x = 310 より左には行けない
- バリアの右端は x = 340 付近
エネミーはバリアの少し内側(310 < 340)まで入れますが、バリア中心(x =
120)まで突き抜けることはありません。ノックバックで左に飛ばされても x = 310 で止まります。
バリアとの物理的な衝突判定ではなく、固定の左端制限(x = 310)で制御されている形です。