From 7c0aaf341c44acf093a98e2206aae4ff3e483a66 Mon Sep 17 00:00:00 2001 From: swrring Date: Fri, 15 May 2026 08:33:19 +0900 Subject: [PATCH] =?UTF-8?q?feat(BT12-Dev):=20=EA=B3=B5=EC=A4=91=20?= =?UTF-8?q?=EB=AA=AC=EC=8A=A4=ED=84=B0=20flyingYOffset=20Inspector=20?= =?UTF-8?q?=EC=8B=A0=EC=84=A4=20(PD=20=EC=A7=80=EC=8B=9C=202026-05-15)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PD 결정: "B안으로 진행해" (Inspector 단일 수치·전 박쥐 일괄·확장 일관) EnemyController.flyingYOffset float Inspector (기본 2f) 신설. IsFlying=true 첫 set 시 transform.position.y += flyingYOffset 자동 적용 (_flyingOffsetApplied flag 영역 중복 적용 차단). - Awake / Start / MonsterRandomizer.Awake 영역 다중 호출 케이스에서도 1회만 적용 - Rigidbody2D.position 동시 갱신 (KinematicObject 정합) - _startY 갱신 (fallThreshold 기준점·IsFlying=true 영역 skip 안전망) 검증 (Play 모드): - 박쥐 3기 모두 flyingYOffset=2 적용 - pos.y: -2.00·-1.90·-1.90 → 0.00·0.10·0.10 (지면 +2 정합) PD Inspector flyingYOffset 영역 수치 조절로 박쥐 높이 변경 가능. Co-Authored-By: Claude Opus 4.7 (1M context) --- Assets/Scripts/Mechanics/EnemyController.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Assets/Scripts/Mechanics/EnemyController.cs b/Assets/Scripts/Mechanics/EnemyController.cs index 317e3b3..f0b093f 100644 --- a/Assets/Scripts/Mechanics/EnemyController.cs +++ b/Assets/Scripts/Mechanics/EnemyController.cs @@ -22,6 +22,11 @@ namespace Platformer.Mechanics // 기본값 M002 (박쥐). 추가 공중 몬스터 영역 PD Inspector 영역 영역. public string[] flyingControllerNames = new[] { "M002" }; + // PD 지시 2026-05-15 — 공중 몬스터 spawn 시 y offset (지면 위로 띄우는 높이) + // IsFlying=true 첫 set 시 transform.position.y += flyingYOffset 자동 적용 (1회만). + public float flyingYOffset = 2f; + bool _flyingOffsetApplied = false; + // BT12-Dev 2026-05-11 — 밟기 공격 기능 제거 (PD 지시): hitRangeX·hitRangeY·stompMinDy 폐기. // Enemy는 Player 공격에만 피해를 받으므로 Player ↔ Enemy 충돌 감지 자체 불필요. @@ -166,6 +171,16 @@ namespace Platformer.Mechanics control.gravityModifier = 0f; control.velocity = Vector2.zero; control.ignoreCollisions = true; + + // PD 지시 2026-05-15 — 첫 IsFlying 적용 시 y offset 1회 (중복 적용 차단) + if (!_flyingOffsetApplied && flyingYOffset > 0f) + { + transform.position += new Vector3(0f, flyingYOffset, 0f); + var body = GetComponent(); + if (body != null) body.position = transform.position; + _startY = transform.position.y; // fallThreshold 기준점 갱신 (IsFlying=true 영역 skip 영역 영역 안전) + _flyingOffsetApplied = true; + } } }