fix(BT12-Dev): PD #2 재발 정정 — Projectile.Update Physics2D.OverlapPoint Wall 탐지 (OnTriggerEnter2D 영역 Static collider 영역 발화 X)
근본 원인 (MCP 직접 진단): - Wall = TilemapCollider2D (Layer 0 Level·Layer 16 AutoForeground)·isTrigger=false·Rigidbody2D 부재 (Static) - Projectile = CircleCollider2D·isTrigger=true·Rigidbody2D 부재 (Static) - Static (Trigger) ↔ Static (Solid) → OnTriggerEnter2D 발화 X (Unity 2D Physics 표준) → 직전 fix `Layer 0/16 isWall` 분기 영역 호출 X 해결: - Projectile.Update 영역 매 frame Physics2D.OverlapPoint(transform.position, WallLayerMask) 영역 검출 - WallLayerMask = (1 << 0) | (1 << 16) — Layer 0 Default·Ground + Layer 16 Foreground·발판 - hit != null → SelfDestruct (영역 영역 영역 영역 영역 영역 정합) - OnTriggerEnter2D 영역 isWall 분기 영역 영역 영역 (영역 영역 영역 영역 영역) 진단 Debug.Log 회수 (이전 추가분). PD 보고 (2026-05-10): "벽에 닿은 투사체가 여전히 소멸하지 않아" PD #1 (적이 죽지 않음) — 본 PM MCP 직접 검증 결과: - Enemy maxHP 20·damage 5·4hit kill 영역 영역 - Schedule<EnemyDeath> 영역 호출 영역 영역 — Execute 영역 호출 영역 정합 (직접 검증) - → Editor 영역 영역 영역 영역 영역 영역 영역 X (runInBackground·Game window) — PD 영역 직접 Play 영역 검증 영역 영역
This commit is contained in:
parent
5cb6040c8a
commit
3f69cc04fe
|
|
@ -58,12 +58,25 @@ namespace EerieVillage.Skills.Effectors
|
|||
Invoke(nameof(SelfDestruct), _lifetime);
|
||||
}
|
||||
|
||||
// BT12-Dev 2026-05-10 (PD #2 fix) — Wall Layer Mask (Layer 0 Default·Ground + Layer 16 Foreground·발판)
|
||||
// Tilemap = Static collider·Projectile = Trigger·둘 다 Rigidbody2D 부재 → OnTriggerEnter2D 발화 X 영역 영역.
|
||||
// → Update 영역 Physics2D.OverlapPoint 영역 Wall Layer 영역 영역 영역 SelfDestruct (영역 영역 영역 영역).
|
||||
protected static readonly int WallLayerMask = (1 << 0) | (1 << 16);
|
||||
|
||||
protected virtual void Update()
|
||||
{
|
||||
transform.position += (Vector3)(_direction * _speed * Time.deltaTime);
|
||||
|
||||
// BT12-Dev 2026-05-10 (PD #1) — 거리 제한 영역 영역 SelfDestruct
|
||||
if (Vector2.Distance(transform.position, _spawnPosition) >= _maxRange)
|
||||
{
|
||||
SelfDestruct();
|
||||
return;
|
||||
}
|
||||
|
||||
// BT12-Dev 2026-05-10 (PD #2 fix) — Wall 영역 OverlapPoint 영역 검출 (OnTriggerEnter2D 영역 Static collider 영역 발화 X)
|
||||
var wallHit = Physics2D.OverlapPoint(transform.position, WallLayerMask);
|
||||
if (wallHit != null)
|
||||
{
|
||||
SelfDestruct();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue