fix(BT12-Dev): A06 독 늪 ground 영역만 spawn (PD 지시 2026-05-15)
PD 보고: "독 늪은 공중에 생성 되지 않도록 수정해줘. (플레이어나 몬스터가 밟고 이동할 수 있는 영역에만 생성 가능해야 함)" 정정 PoisonSwampSpawner.Trigger: 1. nearest Enemy 탐색에서 IsFlying=true (박쥐 등) skip - 공중 박쥐 위치 spawn 후보 제외 2. spawn 후보 (nearest 또는 Player 위치 + OffsetXY) 에서 Vector2.down Raycast (거리 20, groundLayerMask Layer 0 + Layer 16) 3. Raycast hit X → return (spawn 차단) 4. Raycast hit O → spawnPos.y = groundHit.point.y (ground 표면 위) groundLayerMask = (1 << 0) | (1 << 16): - Layer 0 : Level Tilemap (메인 ground) - Layer 16: Floating 발판 (Foreground) 검증 (Play 모드): - 시나리오 1 (Player 지면): spawn 1기·pos.y=-2.88 (ground 위) - 시나리오 2 (Player y=50 공중·모든 Enemy IsFlying): spawn 증가 0 (차단) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
7c0aaf341c
commit
2516ef9cb1
|
|
@ -35,14 +35,23 @@ namespace EerieVillage.Skills.Effectors
|
|||
if (e == null) continue;
|
||||
var h = e.GetComponent<Health>();
|
||||
if (h == null || !h.IsAlive) continue;
|
||||
// PD 지시 2026-05-15 — 공중 몬스터 (박쥐 등) skip · 독 늪 ground spawn 의도
|
||||
if (e.IsFlying) continue;
|
||||
var p = e.transform.position;
|
||||
if (p.x < camPos.x - halfW || p.x > camPos.x + halfW || p.y < camPos.y - halfH || p.y > camPos.y + halfH) continue;
|
||||
float d = Vector2.Distance(playerPos, p);
|
||||
if (d < minDist) { minDist = d; nearest = e; }
|
||||
}
|
||||
|
||||
Vector2 spawnPos = nearest != null ? (Vector2)nearest.transform.position : playerPos;
|
||||
spawnPos += data.OffsetXY;
|
||||
Vector2 candidate = nearest != null ? (Vector2)nearest.transform.position : playerPos;
|
||||
candidate += data.OffsetXY;
|
||||
|
||||
// PD 지시 2026-05-15 — ground Raycast 영역 ground 영역 영역 spawn (공중 spawn 차단)
|
||||
// groundLayerMask = Layer 0 (Level Tilemap) + Layer 16 (Floating 발판)
|
||||
int groundLayerMask = (1 << 0) | (1 << 16);
|
||||
RaycastHit2D groundHit = Physics2D.Raycast(candidate, Vector2.down, 20f, groundLayerMask);
|
||||
if (groundHit.collider == null) return; // ground 미검출 — spawn 차단
|
||||
Vector2 spawnPos = new Vector2(candidate.x, groundHit.point.y);
|
||||
|
||||
// 독 늪 GO spawn (OnHitFxPrefab = FX_Venom_Swamp)
|
||||
GameObject swampGo;
|
||||
|
|
|
|||
Loading…
Reference in New Issue