fix(BT5-Dev #14): VisualBounds 감지 영역 전환 (PM 자인·영역 한정)

PD 강한 어조 (3건):
- 몬스터 충돌체크 발생 X (닿아도 피해 X)
- 밟기 처치 X
- 통과 이동 가능 의무

PM 자인 (C5·C39·C44):
- 엔트리 10 _collider.bounds.Intersects 활용 — Enemy CapsuleCollider2D 0.45×0.09 ground sensor 영역 단독 = Enemy 본체 영역 부재 = 거의 발동 X. Collider 크기 미실측

정정 영역 한정 (2파일만):
- EnemyController.cs: VisualBounds 속성 신규 (spriteRenderer.bounds fallback _collider.bounds). Update _collider.bounds.Intersects → VisualBounds.Intersects
- PlayerEnemyCollision.cs: 밟기 판정 enemy.Bounds.max.y → enemy.VisualBounds.max.y

미변경 영역 (PD 일관성 명시 — 영구 보존):
- Physics2D.IgnoreCollision·queriesHitTriggers·targetFrameRate·fixedDeltaTime
- SetupOneWayPlatforms·DeathZone Coroutine·Player.prefab·flipX
- LastGroundedPosition·OnHealthDeath/Resurrect·자동 컴포넌트
- Health invulnerableDuration·resurrectInvulnerableDuration·GrantInvulnerability
- PlayerInvulnerabilityFlash·ResurrectPromptUI·Enemy.prefab·EnemyController.Awake

매니페스트 archived: 2026-05-07_151159_combat5

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-05-07 15:13:11 +09:00
parent 4852636f9a
commit 0079c0a7bd
2 changed files with 65 additions and 1 deletions

View File

@ -35,7 +35,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**.
|---|------|----------|----------|-----------|----------|----------|
| BT12-Dev | 2026-04-24 23:00 | **스킬 시스템 설계 (C43 "개발팀" 호칭 직접 수령 + C49 시범 적용)** — PD 직접 지시 "개발팀은 기획서를 토대로 스킬 시스템 설계 진행". 기획서 v0.2 (`프로젝트/EerieVillage/기획/content/02_스킬_효과_컨셉.md` 액티브 6카테고리·패시브 5카테고리·각성 4패턴) + CSV v0.3 60종 (`프로젝트/EerieVillage/기획/content/02_스킬_효과_컨셉_v0.3.csv` UTF-8 BOM) 토대. C49 표준 프로세스 시범 적용 (개발팀장 Opus 설계 → 클라이언트팀 Sonnet 구현 → 개발팀장 검증) | **보류** | **[Phase 1 완료 2026-04-24]** 개발팀장 Opus 직접 설계 완결 — `프로젝트/EerieVillage/개발/spec/스킬_시스템_설계_v1.md` (1074 라인, 14 섹션). §1 아키텍처 4계층 · §2 인터페이스 4종(`ISkillRuntime`·`IActiveSkill`·`IPassiveSkill`·`IAwakeningSkill`) + ScriptableObject 3종(`ActiveSkillData`·`PassiveSkillData`·`AwakeningSkillData`) + `PlayerSkillInventory`·`PlayerStats` · §3 CSV→ScriptableObject→Runtime→Health.Decrement 데이터 흐름 + 카테고리 문자열 매핑 · §4 VS 순수형 자동 발동 사이클 (OnTime·OnHit·OnKill + `ActiveSkillRuntime.Tick(deltaTime)` 독립 Cooldown) · §5 `AwakeningManager` 3 조건 동시 충족 + 4 패턴 Dispatcher + 다중 각성 선택 UI · §6 카테고리 매핑 6+5+4 (B는 BT7-Dev `AttackHitbox` 재활용 · 나머지 5 효과 발동기 신설) · §7 Phase 2-A~E 작업 단위 분해 (스크립트 25개·테스트 10건·asset 60개) · §10 BT7-Dev 통합 영역 (Health·AttackHitbox·PlayerAttackTicker·PlayerController 완전 보존 · `Health.OnDamagedEvent` 확장 필요 명시) · §11 기각안 5건 + 대화로그 추가 2건 (총 7건 C32 초과). 대화로그 `공유/대화로그/EerieVillage/2026-04-24.md` `[BT12-Dev Phase 1 완료] 개발팀장 스킬 시스템 설계 v1 (1074 라인)` 엔트리 완결. **C48 3자문 전수 통과**로 Phase 2 클라이언트팀 Sonnet Task는 본 Task에서 호출하지 않고 **PM 차원 별도 위임** 권고 (C48·C49·C50 정합) | **기획서 확정 대기** (PD 2026-04-25 직접 지시 — "기획서 확정되기 전까지 작업 대기") | **재개 트리거**: 기획팀 v0.3 또는 v1.0 확정 + balance-designer 60종 수치 확정 + narrative-designer 카드명 세계관 재매핑 결정 → C50 Phase 2 사전 승인 옵션(a/b/c/d) PD 결정 → 분할 시 Phase 2-A~E 순차 진행 (인터페이스·SO → 중앙 컴포넌트 → 효과 발동기 → 60장 .asset → EditMode 테스트) → Phase 3 개발팀장 검증 → 완료 아카이브. **선행 차단 블로커**: `paths.local.json.UNITY_PROJECT_ROOT: __SET_PER_PC__` 미설정 — 재개 시 PD PC 경로 설정 필요. Phase 1 산출물 1074 라인 설계 문서는 보존 |
| BT7-Dev | 2026-04-24 | **BT7-Plan 개발 집행 Phase 1** — VS 순수형 자동 발동(공격 버튼 제거, PlayerAttackTicker 주기 타이머) + 하트 분할 시스템(Health.maxHearts·QuartersPerHeart·IncreaseMaxHearts·Heal·Decrement(int)) + EditMode 테스트 갱신(10→13) + AttackHitbox 쿼터 단위 피해 통합 + TODO 주석(EnemyController.attackDamage balance v0.2 대기) | **진행중** | Unity 편집 6파일 · BT 산출물 2파일 · 백업 6종. **Unity 외부 레포 `D:/NerdNavis/EerieVillage/`**: `Assets/Scripts/Gameplay/{PlayerAttack.cs(개정), PlayerAttackTicker.cs(신설)+.meta}`·`Assets/Scripts/Mechanics/{Health.cs(전면개정), PlayerController.cs(Attack입력제거·Facing public), AttackHitbox.cs(Decrement(damage)통합)}`·`Assets/Settings/InputSystem_Actions.inputactions(Attack액션·바인딩 완전 제거)`·`Assets/Tests/Editor/PlayerAttackTests.cs(10→13)`. **BT 레포**: `프로젝트/EerieVillage/개발/06_BT7-Plan_VS순수형_재구조.md`(신설) · `공유/개발팀_백업/EerieVillage/*.bak_20260424_1551.*`(6종). PD 수동 검증 2종(Asset import+EditMode Runner 실행·Player.prefab에 PlayerAttackTicker 부착+Play 검증) | — | **PM 수행 대기**: pm-auditor 감사 → BT worktree commit → Unity 외부 레포는 PD Editor 실행 시 GitAutoSync 자동 push → Play 검증 결과(13 tests green + 자동 공격 발동 확인) 수령 → balance/01 v0.2 확정 후 후속 Phase(EnemyController·적 ATK 테이블·HUD 하트 UI) 분리 착수 → 완료 아카이브 이동 |
| BT5-Dev | 2026-04-23 (2026-05-07 신규 지시 추가) | **EerieVillage Phase 3 파일럿 (개발)** — ①Unity git 초기화·자동 sync ②캐릭터 교체·이동·공격·i-frame ③템플릿 분석 ④~~PlayerTestGirl 아틀라스~~ (2026-05-07 폐기) ⑤**Hero1 정식 캐릭터 교체** (2026-05-07 신규) — `E:/EerieVillage/Assets/Character/Sprites/Hero1/` 37 PNG 자산 적용 + 캐릭터 리소스 규칙 SOT 신설 (모션 8종 + 상태 전환 룰: idle⇄combatidle 5초 타이머·hit 인터럽트 보호·jump·resurrection 시퀀스·death) | **진행중** | [1·3단계 완료] `9f689c1` 원격 push · `scripts/unity_auto_sync.sh` · `01~03_*.md` 분석 3종 [2단계 v0.2 완료] Player·Enemy prefab + 8 EditMode tests [**3단계 PlayerTestGirl 폐기 결정 2026-05-07**] PD 지시로 Hero1 정식 자산 교체. PlayerTestGirl 자산 5종(meta·Idle.anim·Run.anim·Attack.anim·controller·prefab)은 Hero1 기반 재작성 + 신규 자산 추가 (PlayerCombatIdle·PlayerJump·PlayerHit·PlayerResurrection·PlayerDeath.anim). 기존 Player*.png 9종은 `_archive/` 백업 + Hero1 단독 사용. Player.controller 전면 재설계 + Health.cs hit 인터럽트 보호 + 부활 시스템 추가. [**5단계 Hero1 적용 진행중 2026-05-07**] PD 결정 5건 A안 일괄 채택 (`combat idle`→`combatidle` rename·death 모션 8종 확장·jump 1프레임 정합·기존 9종 archive 백업·Land/Spawn/Victory 미사용). 본 PM 매니페스트 등록(`2026-05-07_123431`) + pm-auditor 사전 감사 통과(Critical 0·Major 0·Minor 1·Improvement 2). 본 세션 = `strange-turing-c6797e` worktree 자동 재생성 — 본 작업 후 §6-A 절차 인계 영역 | `프로젝트/EerieVillage/개발/05_PlayerTestGirl_아틀라스_적용.md` (폐기 표기 영역) · `프로젝트/EerieVillage/개발/spec/캐릭터_리소스_규칙_v1.md` (신설) · `프로젝트/EerieVillage/개발/06_Hero1_적용_설계.md` (개발팀장 Opus Phase 1 설계 산출 예정) · Unity 영향 자산 (개발팀장 위임): `Assets/Character/{Sprites/Hero1/*, Animations/{PlayerIdle,PlayerRun,PlayerAttack,PlayerCombatIdle,PlayerJump,PlayerHit,PlayerResurrection,PlayerDeath,Player.controller}}` · `Assets/Prefabs/Player.prefab` · `Assets/Scripts/Mechanics/Health.cs` · `Assets/Tests/Editor/PlayerAttackTests.cs` · `공유/대화로그/EerieVillage/2026-05-07.md` (신설) | — | **C49 표준 프로세스 진행중**: ① 매니페스트 등록 + pm-auditor 감사 ✅ ② 캐릭터 리소스 규칙 SOT 신설 ✅ ③ 개발팀장 Opus Phase 1 설계 ✅ ④ 클라이언트팀 Sonnet Phase 2 적용 ✅ ⑤ 개발팀장 Opus Phase 3 검증 ✅ ⑥ commit `13976e2` + main push ✅ ⑦ **CS0101 사건 + D 옵션 후속 정정** ✅ (PD Editor 실행 시 `.cs.bak_*.cs` 컴파일 에러 → Unity bak_2026* 28 파일 전수 삭제 + Phase 1 §12 백업 명세 전면 정정 + feedback 2종 등록 [`feedback_pm_excessive_decision_request` 헌법급 + `feedback_unity_backup_compile_pollution`]) ⑧ **Hero1 facing 반전 + Collider2D 시각 정합 1차** ✅ (PD 지시 → PM 즉시 처리 — `feedback_pm_excessive_decision_request` 첫 적용. PlayerController spriteRenderer·animator 자식 fallback + Player.prefab BoxCollider2D Size 0.32×0.54→0.45×1.2 + Offset (-0.09,-0.14)→(0,-0.05). PM 시각 판단 실패 — Hero1 "우측 향함"으로 잘못 판단) ⑨ **facing 로직 반전 + Collider Offset 양수 재정정 2차** ✅ ⑩ **피격 무적 깜빡임 + 밟기 복원 + 사망 입력 차단 + 부활 팝업 + 부활 무적** ✅ ⑪ **밟기 점프 판정 강화·Bounce 1/3·낙사 위치 복귀·최적화** ✅ ⑫ **밟기 위치 단독 판정·Enemy Trigger 통과·낙사 카메라 외 대기** ✅ ⑬ **Enemy 등장 복원 + One-Way Platform**(PD 2건 재보고. PM 자인 — Enemy IsTrigger=1 변경의 지면 통과 부작용. Enemy.prefab IsTrigger 1→0 복원 + EnemyController Physics2D.IgnoreCollision Awake + Bounds.Intersects 매 프레임 감지. GameOptimizer.SetupOneWayPlatforms — AfterSceneLoad 자동 PlatformEffector2D[useOneWay·surfaceArc 180] 부착) → ⑭ PD Editor 재검증 (Enemy 정상 등장·옆 통과·점프 밟기·천장 통과·One-Way 착지) → 완료 아카이브 이동 |
| BT5-Dev | 2026-04-23 (2026-05-07 신규 지시 추가) | **EerieVillage Phase 3 파일럿 (개발)** — ①Unity git 초기화·자동 sync ②캐릭터 교체·이동·공격·i-frame ③템플릿 분석 ④~~PlayerTestGirl 아틀라스~~ (2026-05-07 폐기) ⑤**Hero1 정식 캐릭터 교체** (2026-05-07 신규) — `E:/EerieVillage/Assets/Character/Sprites/Hero1/` 37 PNG 자산 적용 + 캐릭터 리소스 규칙 SOT 신설 (모션 8종 + 상태 전환 룰: idle⇄combatidle 5초 타이머·hit 인터럽트 보호·jump·resurrection 시퀀스·death) | **진행중** | [1·3단계 완료] `9f689c1` 원격 push · `scripts/unity_auto_sync.sh` · `01~03_*.md` 분석 3종 [2단계 v0.2 완료] Player·Enemy prefab + 8 EditMode tests [**3단계 PlayerTestGirl 폐기 결정 2026-05-07**] PD 지시로 Hero1 정식 자산 교체. PlayerTestGirl 자산 5종(meta·Idle.anim·Run.anim·Attack.anim·controller·prefab)은 Hero1 기반 재작성 + 신규 자산 추가 (PlayerCombatIdle·PlayerJump·PlayerHit·PlayerResurrection·PlayerDeath.anim). 기존 Player*.png 9종은 `_archive/` 백업 + Hero1 단독 사용. Player.controller 전면 재설계 + Health.cs hit 인터럽트 보호 + 부활 시스템 추가. [**5단계 Hero1 적용 진행중 2026-05-07**] PD 결정 5건 A안 일괄 채택 (`combat idle`→`combatidle` rename·death 모션 8종 확장·jump 1프레임 정합·기존 9종 archive 백업·Land/Spawn/Victory 미사용). 본 PM 매니페스트 등록(`2026-05-07_123431`) + pm-auditor 사전 감사 통과(Critical 0·Major 0·Minor 1·Improvement 2). 본 세션 = `strange-turing-c6797e` worktree 자동 재생성 — 본 작업 후 §6-A 절차 인계 영역 | `프로젝트/EerieVillage/개발/05_PlayerTestGirl_아틀라스_적용.md` (폐기 표기 영역) · `프로젝트/EerieVillage/개발/spec/캐릭터_리소스_규칙_v1.md` (신설) · `프로젝트/EerieVillage/개발/06_Hero1_적용_설계.md` (개발팀장 Opus Phase 1 설계 산출 예정) · Unity 영향 자산 (개발팀장 위임): `Assets/Character/{Sprites/Hero1/*, Animations/{PlayerIdle,PlayerRun,PlayerAttack,PlayerCombatIdle,PlayerJump,PlayerHit,PlayerResurrection,PlayerDeath,Player.controller}}` · `Assets/Prefabs/Player.prefab` · `Assets/Scripts/Mechanics/Health.cs` · `Assets/Tests/Editor/PlayerAttackTests.cs` · `공유/대화로그/EerieVillage/2026-05-07.md` (신설) | — | **C49 표준 프로세스 진행중**: ① 매니페스트 등록 + pm-auditor 감사 ✅ ② 캐릭터 리소스 규칙 SOT 신설 ✅ ③ 개발팀장 Opus Phase 1 설계 ✅ ④ 클라이언트팀 Sonnet Phase 2 적용 ✅ ⑤ 개발팀장 Opus Phase 3 검증 ✅ ⑥ commit `13976e2` + main push ✅ ⑦ **CS0101 사건 + D 옵션 후속 정정** ✅ (PD Editor 실행 시 `.cs.bak_*.cs` 컴파일 에러 → Unity bak_2026* 28 파일 전수 삭제 + Phase 1 §12 백업 명세 전면 정정 + feedback 2종 등록 [`feedback_pm_excessive_decision_request` 헌법급 + `feedback_unity_backup_compile_pollution`]) ⑧ **Hero1 facing 반전 + Collider2D 시각 정합 1차** ✅ (PD 지시 → PM 즉시 처리 — `feedback_pm_excessive_decision_request` 첫 적용. PlayerController spriteRenderer·animator 자식 fallback + Player.prefab BoxCollider2D Size 0.32×0.54→0.45×1.2 + Offset (-0.09,-0.14)→(0,-0.05). PM 시각 판단 실패 — Hero1 "우측 향함"으로 잘못 판단) ⑨ **facing 로직 반전 + Collider Offset 양수 재정정 2차** ✅ ⑩ **피격 무적 깜빡임 + 밟기 복원 + 사망 입력 차단 + 부활 팝업 + 부활 무적** ✅ ⑪ **밟기 점프 판정 강화·Bounce 1/3·낙사 위치 복귀·최적화** ✅ ⑫ **밟기 위치 단독 판정·Enemy Trigger 통과·낙사 카메라 외 대기** ✅ ⑬ **Enemy 등장 복원 + One-Way Platform****VisualBounds 감지 영역 전환** ✅ (PD 강한 어조 — "한번에 제대로 수정·일관성 영역". PM 자인: Enemy CapsuleCollider2D 0.45×0.09 ground sensor 영역 단독 Bounds.Intersects → 거의 발동 X. 정정 한정 2파일: EnemyController VisualBounds 신규 [spriteRenderer.bounds fallback] + PlayerEnemyCollision 밟기 판정 VisualBounds 기반. 미변경 영역 12종 명시적 보존 — IgnoreCollision·queriesHitTriggers·targetFrameRate·OneWayPlatform·DeathZone·Player.prefab·PlayerController·Health·Flash·Prompt·Enemy.prefab·EnemyController.Awake 그대로) → ⑮ PD Editor 재검증 (3건 — 닿으면 피해·밟기 처치·통과 가능) → 완료 아카이브 이동 |
---

View File

@ -660,3 +660,67 @@ if (animator == null) animator = GetComponentInChildren<Animator>();
- `feedback_pm_excessive_decision_request` 즉시 진행
---
## 엔트리 11. VisualBounds 감지 영역 전환 (PM 자인·일관성 영역)
**시각**: 2026-05-07 15:11 ~
**주체**: 총괄PM (직접 처리)
**영역**: BT5-Dev #14
**유형**: PD 강한 어조 보고 (3건) → 본 PM 신중 진단·정정 영역 한정
### PD 원문
> "한번에 제대로 좀 수정해! 일관성 있게 작업하도록 기존에 수정한 내용이 함부로 바뀌지 않도록 신경 써서 작업해!
> - 다시 몬스터와 충돌체크가 발생되지 않고 있어. 몬스터와 닿으면 피해를 입어야 해.
> - 몬스터를 밟으면 몬스터를 처치할 수 있어야 해.
> - 몬스터와 닿았을 때 피해를 입는 것과 별개로 통과해서 이동이 가능해야해."
### PM 자인 (C5·C44)
엔트리 10에서 `_collider.bounds.Intersects` 활용 — Enemy CapsuleCollider2D `m_Size: 0.45 × 0.09`(지면 sensor 영역) 단독으로 감지 → Enemy 본체 영역 부재 → 거의 발동 X. **변경 시점 Collider 크기 미실측**. C39 위배.
### 진단·정정 (영역 한정)
**원인**: Enemy CapsuleCollider2D = ground sensor 전용 (Enemy 발 0.45×0.09). Enemy 시각 영역(SpriteRenderer)과 별개 영역. Bounds.Intersects 충돌 영역 너무 좁음.
**정정 (2개 파일만 변경 — 일관성 영역)**:
| 파일 | 변경 |
|------|-----|
| `EnemyController.cs` | `VisualBounds` 속성 신규 (`spriteRenderer.bounds` fallback `_collider.bounds`). Update 감지 영역 `_collider.bounds.Intersects``VisualBounds.Intersects` |
| `PlayerEnemyCollision.cs` | 밟기 위치 판정 `enemy.Bounds.max.y``enemy.VisualBounds.max.y` (캐릭터 시각 머리 영역 정합) |
### 미변경 영역 (PD 일관성 명시 영역 — 영구 보존)
| 영역 | 상태 |
|------|-----|
| `Physics2D.IgnoreCollision` Player↔Enemy | 그대로 (통과 가능 영역) |
| `Physics2D.queriesHitTriggers = false` | 그대로 |
| `Time.fixedDeltaTime = 1/60` · `targetFrameRate = 60` · `vSync 0` | 그대로 |
| `SetupOneWayPlatforms` (PlatformEffector2D) | 그대로 |
| `DeathZone` Coroutine + 카메라 viewport 영역 외 대기 | 그대로 |
| `Player.prefab` Collider Size·Offset·m_FlipX | 그대로 |
| `PlayerController` flipX 로직·LastGroundedPosition·OnHealthDeath/Resurrect 구독·자동 컴포넌트 부착 | 그대로 |
| `Health` invulnerableDuration 0.5 · resurrectInvulnerableDuration 2.0 · GrantInvulnerability | 그대로 |
| `PlayerInvulnerabilityFlash` · `ResurrectPromptUI` | 그대로 |
| `Enemy.prefab` IsTrigger=0 (지면 충돌 영역) | 그대로 |
| `EnemyController` IgnoreCollision Awake | 그대로 |
### PD Play 검증 (3건)
1. **닿으면 피해**: Enemy 시각 영역에 Player가 닿으면 OnTrigger 영역 X — VisualBounds.Intersects 매 프레임 감지 → PlayerEnemyCollision → i-frame 적용 Decrement
2. **밟기 처치**: 점프 후 적 시각 상단 - 0.15 영역 위 하강 → EnemyDeath + Bounce(jumpTakeOffSpeed/3)
3. **통과 가능**: `Physics2D.IgnoreCollision`로 Player ↔ Enemy 물리 충돌 무시 = 통과 (감지는 별개 Bounds 영역)
### 산출물
- `E:/EerieVillage/Assets/Scripts/Mechanics/EnemyController.cs` (VisualBounds + Update 감지 영역)
- `E:/EerieVillage/Assets/Scripts/Gameplay/PlayerEnemyCollision.cs` (밟기 판정 VisualBounds 기반)
### 관련 규칙·자산
- C2 근본 (Collider 영역 너무 좁음 → 시각 영역 활용)
- C5·C39·C44 (본 PM 미실측 자인)
- `feedback_pm_excessive_decision_request` 옵션 나열 X
- PD 일관성 명시 영역 — 다른 영역 변경 X 의무
---