feat(BT5-Dev #11): 밟기 점프 판정·Bounce 1/3·낙사 위치 복귀·게임 최적화 (PD 4건)

PD 직접 지시 4건 (2026-05-07):
1. 밟기 = 점프 상태(공중) + 적 상단 충돌만. 비점프는 플레이어 피해
2. 밟기 튕김 1/3
3. 화면 스크롤 버벅임 — 게임 최적화
4. 낙사 = HP 감소 + 가까운 이동 가능 지역 복귀 + 1초 무적

Unity 외부 영역 변경:
- PlayerEnemyCollision.cs: 밟기 3조건 (!IsGrounded && velocity.y<0 && Bounds.min.y>=enemy.Bounds.center.y) + Bounce(jumpTakeOffSpeed/3)
- Health.cs: GrantInvulnerability(float duration) 신규 — Mathf.Max로 기존 i-frame과 비교
- PlayerController.cs: LastGroundedPosition 추적 (Update 끝)
- DeathZone.cs: 즉사 schedule 폐기 → 위치 복귀 + Decrement(1) + GrantInvulnerability(1)
- GameOptimizer.cs (신설): targetFrameRate 60 + vSync 0 + fixedDeltaTime 1/60 (RuntimeInitialize Before scene)

별건 후속: Sprite Atlas·Cinemachine damping·Tilemap CompositeCollider2D (Editor 작업 영역)

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

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-05-07 14:51:18 +09:00
parent 9f7e9d95fb
commit 73b4b9c824
2 changed files with 63 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차** ✅ ⑩ **피격 무적 깜빡임 + 밟기 복원 + 사망 입력 차단 + 부활 팝업 + 부활 무적**(PD 5건 일괄 지시 → PM 즉시 처리. Health invulnerableDuration 0.5 + resurrectInvulnerableDuration 2.0 신규 + Resurrect 시 무적 적용. PlayerEnemyCollision 밟기 복원 [BT5-Dev 2단계 폐기 무효화 — PD 직접 지시]. PlayerController OnDeath→controlEnabled=false 구독 + 동반 컴포넌트 자동 부착. PlayerInvulnerabilityFlash·ResurrectPromptUI 신설 [OnGUI 임시·예→Resurrect/아니오→SceneManager.LoadScene]) → ⑪ PD Editor 재검증 (5건 동작 — 피격 0.5초 깜빡임·밟기·사망 입력 차단·부활 팝업·부활 후 2초 무적) → 완료 아카이브 이동 |
| 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·낙사 위치 복귀·최적화** ✅ (PD 4건 일괄 지시 → PM 즉시 처리. PlayerEnemyCollision 밟기 3조건 [공중+하강+적 중심 위] · Bounce jumpTakeOffSpeed/3 · Health.GrantInvulnerability 신규 · PlayerController.LastGroundedPosition 추적 · DeathZone 즉사 폐기→HP 감소+복귀+1초 무적 · GameOptimizer 신설 [targetFrameRate 60·vSync 0·fixedDeltaTime 1/60]. Sprite Atlas·Cinemachine·Tilemap 영역은 별건 후속 권고) → ⑫ PD Editor 재검증 (4건 동작 — 비점프 밟기 차단·튕김 1/3·스크롤 fps 안정·낙사 복귀+1초 무적) → 완료 아카이브 이동 |
---

View File

@ -486,3 +486,65 @@ if (animator == null) animator = GetComponentInChildren<Animator>();
- `feedback_pm_excessive_decision_request` (옵션 결정 요청 없이 즉시 진행)
---
## 엔트리 8. 밟기 점프 판정 강화·Bounce 1/3·낙사 위치 복귀·게임 최적화 (PD 지시 4건 일괄)
**시각**: 2026-05-07 14:49 ~
**주체**: 총괄PM (직접 처리)
**영역**: BT5-Dev #11
### PD 원문 (4건)
1. 밟기 = 점프 상태(공중)에서 적 상단 충돌 시만. 비점프 상태는 플레이어 피해
2. 밟기 후 튕김 높이 1/3
3. 화면 스크롤 시 버벅임 — 게임 최적화
4. 낙사 시 즉사 폐기 → HP 감소 + 가장 가까운 이동 가능 지역 복귀 + 1초 무적
### 처리
| # | 영역 | 변경 |
|---|------|------|
| 1 | `PlayerEnemyCollision.cs` | `stomped = !player.IsGrounded && player.velocity.y < 0 && player.Bounds.min.y >= enemy.Bounds.center.y`. 공중 + 하강 + 적 중심 위 = 3조건 충족 시 밟기. 그 외 i-frame 피격 |
| 2 | `PlayerEnemyCollision.cs` | `player.Bounce(player.jumpTakeOffSpeed / 3f)` (기존 7.0 → 2.33) |
| 3 | `GameOptimizer.cs` (신설) | `Application.targetFrameRate=60` + `QualitySettings.vSyncCount=0` + `Time.fixedDeltaTime=1/60` (RuntimeInitializeOnLoadMethod BeforeSceneLoad). Sprite Atlas·Cinemachine damping·Tilemap CompositeCollider2D는 별건 후속 |
| 4 | `Health.cs` | `GrantInvulnerability(float duration)` 신규 — 외부 시스템이 i-frame 시간 부여 (Mathf.Max로 기존 영역과 비교) |
| 4 | `PlayerController.cs` | `LastGroundedPosition` 신규 + `Update()` 끝에서 `if (IsGrounded) LastGroundedPosition = transform.position` 추적 |
| 4 | `DeathZone.cs` | 즉사 schedule 폐기 → `p.transform.position = LastGroundedPosition` + `velocity = Vector2.zero` + `Health.Decrement(1)` + `GrantInvulnerability(1f)` |
### KinematicObject 영역 활용
- `velocity` = **public Vector2** (외부 접근 가능)
- `IsGrounded` = public 속성
- 외부 변경·접근 영역으로 PlayerEnemyCollision·DeathZone 양쪽 직접 활용
### Sprite Atlas·Cinemachine·Tilemap 영역 (별건 후속 권고)
본 GameOptimizer는 가장 안전한 즉시 적용 영역만. 추가 최적화는 Editor 작업 영역:
- **Sprite Atlas 신설** (Window > 2D > Sprite Atlas Asset) — Hero1 37 sprite 단일 atlas packing → Draw Call 절감
- **Cinemachine Damping** (CinemachineConfiner.prefab) — Look Ahead Smoothing 영역 정정
- **Tilemap CompositeCollider2D** — 다수 BoxCollider2D 통합
### 산출물
- `E:/EerieVillage/Assets/Scripts/Mechanics/Health.cs` (GrantInvulnerability)
- `E:/EerieVillage/Assets/Scripts/Mechanics/PlayerController.cs` (LastGroundedPosition 추적)
- `E:/EerieVillage/Assets/Scripts/Gameplay/PlayerEnemyCollision.cs` (밟기 3조건 + Bounce 1/3)
- `E:/EerieVillage/Assets/Scripts/Mechanics/DeathZone.cs` (즉사 폐기 → HP 감소·복귀·무적)
- `E:/EerieVillage/Assets/Scripts/Mechanics/GameOptimizer.cs` (신설)
- `공유/대화로그/EerieVillage/2026-05-07.md` 본 엔트리
- `공유/PD_지시_트래킹/개발팀_PD_지시_로그.md` BT5-Dev 12단계 추가
### PD Play 검증 (4건)
1. 적과 평지 마주침 → 플레이어 피해. 점프 + 적 위 하강 → 적 사망
2. 밟기 시 튕김 = 기존 점프 1/3 영역
3. 화면 스크롤 시 fps 안정 (60 상한)
4. 낙사 → HP -1쿼터 + 마지막 grounded 위치로 복귀 + 1초 깜빡임 무적
### 관련 규칙·자산
- C2 근본 해결 (밟기 단순 위치 판정 → 점프 상태 강화)
- C29·C36 PM 자율 운영
- `feedback_pm_excessive_decision_request` 즉시 진행 정합
---