Commit Graph

24 Commits

Author SHA1 Message Date
깃 관리자 7db47ca64c fix(BT12-Dev): DeathZone 4개 비활성 (보이지 않는 피해 영역 정정)
PD: "전진하다보면 보이지 않는 벽이 있는 것처럼 피해를 입는 지역"

근본 (MCP 자율 실측):
- DeathZone 4개 (Layer 0·BoxCollider2D·isTrigger=True·Platformer.Mechanics.DeathZone)
- DeathZone[2] bounds X 6.95~36.35·Y -12.54~**-2.54** ← Player y=-2 영역 영역
- DeathZone[4] bounds X -16.10~-8.02·Y -24.26~**2.86** ← Player y=-2 영역 영역
- Sample Microgame 떨어짐 영역 영역·Player 새 위치·새 지형 영역 영역 영역 X
- Player Y 영역 → DeathZone trigger → 피해/사망

fix: DeathZone 4개 SetActive(false)

회귀 영역 X:
- Wall LayerMask·Composite·GameObject·InfiniteHorizontalGround 영역 영역 X
- Token·CinemachineConfiner·Victory Trigger 영역 영역 X (영역 영역 영역 영역)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 00:46:12 +09:00
깃 관리자 0160907c78 fix(BT12-Dev): Cinemachine TargetOffset.y 1.7 → 2.7 (+1)
PD: "화면을 더 위로 보이게 바꿔줘. +1 추가해봐"

Camera Y 영역 (Player.y=-2 + 2.7) = 0.7·visible Y -4.3 ~ 5.7
Confiner Camera Y allowed top 4.21 영역 영역 X (0.7 < 4.21)·정합

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 00:44:26 +09:00
깃 관리자 cc829d9161 fix(BT12-Dev): Camera TargetOffset 1.7 + Player y=-2 + Enemy y=3.5
PD: "TargetOffset 0.2 정도 더 위로" → 1.5 → 1.7
PD: "Player 기본 y=-2·Enemy 기본 y=3.5"

근본 (MCP 자율 실측):
- Cinemachine TargetOffset.y 1.5 → 1.7 (하늘 0.2 unit 추가)
- Player.transform.position.y → -2 (PrefabUtility 정합)
- Enemy 16개 transform.position.y → 3.5 (PrefabUtility 정합·prefab override 저장)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 00:31:57 +09:00
깃 관리자 18fabcc8d3 fix(BT12-Dev): Cinemachine TargetOffset.y 0 → 1.5 (하늘 영역 영역)
PD: "카메라 위치를 좀 더 위로 올려서 하늘이 더 보이게 바꿔줘"

근본 (MCP 자율 실측):
- Cinemachine TargetOffset.y = 0 (직전 6b1730b·ortho 5.0 정합 PM 추정)
- Confiner BoundingShape Camera Y allowed top = 9.21 - 5 = 4.21 (Confiner pos.y -0.79·top point 10.00·ortho 5.0)
- TargetOffset.y = 1.5 → Camera Y = Player.y(0.5) + 1.5 = 2.0·visible Y -3.0 ~ 7.0
- Confiner cap 4.21 영역 영역 X (Camera Y 2.0 < 4.21)·하늘 영역 1.5 unit 추가 노출

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 00:24:08 +09:00
깃 관리자 6b1730bd45 fix(BT12-Dev): Camera ortho 5.0 + Enemy PrefabUtility + patrol fallback + RangeTier
PD: "전혀 변화가 없어"·"적이 움직이지 않음"·"멀리서 보는 형태로 바꿔야"

근본 4종 (MCP 자율 실측·자성):

1. Camera 영역 (PD "멀리서") — Cinemachine Lens.OrthographicSize 3.5 → 5.0
   visible width 12.44 → 17.78·height 7 → 10
   TargetOffset.y 1.0 → 0 (ortho 증가 정합 PM 추정·PD 명시 X)

2. Enemy 위치 -3.62 적용 X (직전 230d755 적용 실패)
   - 원인: SetDirty만 호출·PrefabUtility.RecordPrefabInstancePropertyModifications 누락
   - prefab instance override 저장 X → Awake startY=-1.62 잔존
   - fix: PrefabUtility.RecordPrefabInstancePropertyModifications(transform)

3. Enemy patrol fallback (직전 9bc9ccb fix 미작동)
   - 원인: AutoForeground Tilemap 활성·groundTilemaps.Count=1
   - Count==0 fallback 영역 X·MeasureSafeWalkDistance line 199 startTm==null → return 0
   - fix: line 199 fallback 추가 — `if (startTm == null) return patrolMaxRange`

4. RangeTier mults 정정 (Camera ortho 영향)
   - camWidth 12.44 → 17.78 (1.43배)
   - mults 1/1.43 비례 축소: 0.2/0.5/0.667/1.0/1.5 → 0.14/0.35/0.467/0.7/1.05
   - maxRange 동등 유지 (A02 MediumLong 12.44 unit 정합)

회귀 영역 X:
- Camera height 10·Background height 10.25 정합
- Confiner Camera Y allowed -11.29~5.71 정합
- Enemy stuckThresholdTime·_phaseCooldown 영역 영역 X
- cliffCheck Layer 0 GameObject hit 정합

본 PM 자성:
- 직전 commit 230d755·9bc9ccb 적용 X 미실측 (자성 #15 패턴 재발)
- PrefabUtility 의무 미준수·fallback 조건 분기 미실측
- "PD 변화 X" 보고 시 즉시 MCP 실측 의무

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 23:47:29 +09:00
깃 관리자 9bc9ccb48e fix(BT12-Dev): Camera TargetOffset.y 1.62→1.0 + Enemy patrol Tilemap 부재 fallback
PD: "화면 하단이 좀 더 보여야할거 같아"
PD: "왜 적이 움직이지 않는거지? 적이 움직이게 해줘"

근본 (MCP 자율 실측):

1. Camera 하단
   - 직전 230d755 TargetOffset.y=1.62·visible -1.38 ~ 5.62 (Background top 정렬·하단 미노출)
   - 정정 TargetOffset.y=1.0·Camera Y=1.5·visible -2.0 ~ 5.0 (하단 1.0 unit 추가)

2. Enemy patrol 정지
   - EnemyController.MeasureSafeWalkDistance (line 146-223)
     groundTilemaps: Level 비활성 (48109f9)·AutoForeground 부재 → Count=0 → return 0
     → _maxRange=0 → SetNextPatrolTarget targetX = startX → 정지
   - fix: Tilemap 부재 fallback
     ```
     if (groundTilemaps.Count == 0) return patrolMaxRange;
     ```
     → _maxRange=75·Phase 0/2 startX ± min(50~75, 75) → 좌우 왕복

회귀 영역:
- cliffCheck Raycast Layer 0 (groundLayerMask (1<<0)|(1<<16))·GameObject Layer 0 hit 정합
- InfiniteHorizontalGround Camera 따라 reposition·Composite (53.12 unit) 영역 외 patrol 도달 시 항상 collide
- Cinemachine Confiner BoundingShape2D·Composer offset 영향 X
- Enemy IgnoreCollision Player·Layer 14↔13 정합

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 23:34:00 +09:00
깃 관리자 230d7553e9 fix(BT12-Dev): Cinemachine TargetOffset.y 1.62 + Enemy 16개 위치 -3.62
PD: "맵 하단부에 카메라가 비쳐서 어색해. 카메라 영역 올려줘"
PD: "몬스터가 어색하게 튕겨오르고 있어"

근본 (MCP 자율 실측):

1. Camera 영역
   - Camera visible Y -3.00 ~ 4.00 (ortho 3.5)·Background bottom -4.62
   - 하단 -4.62 ~ -3.00 영역 카메라 안 보임
   - fix: Cinemachine TargetOffset.y 0 → 1.62 (Background top 정렬)
     → visible Y -1.38 ~ 5.62

2. Enemy 튕겨오름 (EnemyController.cs:343-357)
   - Enemy pos.y -0.13·_startY -0.13·fallThreshold 1.0
   - GameObject top -4.12 → Enemy gravity 영역 4.0 unit 낙하
   - 텔레포트 trigger Y = _startY - fallThreshold = -1.13
   - Enemy 영역 -1.13 영역 영역 → 시작 위치 (-0.13) 텔레포트 → 무한 반복 = 튕겨오름
   - fix: Enemy 16개 pos.y = -3.62 (capsule extents.y 0.503 실측·bottom -4.123 ≈ GameObject top -4.12)
     → _startY = -3.62·텔레포트 trigger Y = -4.62 (GameObject top 영역 영역 X)
     → Enemy GameObject 영역 정착·튕겨오름 해소

회귀 영역:
- Cinemachine Confiner BoundingShape2D 정합 (TargetOffset Camera offset·Confiner Camera 위치 별·영향 X)
- Enemy patrol _startX 변경 X·동일·groundTilemaps 영역 영역 별
- IgnoreCollision Player↔Enemy Awake/Update 자동 적용 정합

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 22:52:45 +09:00
깃 관리자 2d8429dec5 fix(BT12-Dev): GameObject 정상화 (parent 분리·scale 1·box.size 정합)
PD: "몬스터도 플레이어와 동일하게 길처럼 동작하도록 수정해
(지금은 바닥에 닿으면 천천히 밀려남)"

본 PM MCP 자율 실측 자성:
- 직전 commit 832cc07 적용 후 PD Editor 수동 변경분 미실측 (자성 #15 패턴 재발)
- box.size (53.12, 1.0) → (53.12, 1.64)·offset (0,0) → (0, 0.71) 회귀
- parent=Background_BgImage1·localScale (100, 1, 1) 추가 변경 — 832cc07 영역 외

근본 원인 4종:
1. parent = Background_BgImage1 자식 (Background reposition 따라 위치 변동·이중 reposition)
2. localScale (100, 1, 1) — bounds 5312 unit (53.12 × 100)
3. box.size (53.12, 1.64)·offset (0, 0.71) — 832cc07 회귀
4. InfiniteHorizontalGround _colliderWidth=5312 → reposition 사실상 X
→ Enemy/Player KinematicObject Cast 영역 부정확·바닥 hit 시 밀려나는 현상

fix:
- parent = null (World root·Background 자식 분리)
- localScale (1, 1, 1)
- box.size (53.12, 1.0)·offset (0, 0)
- position (0, -4.62, 0) (Background 최하단 = pos.y(0.5) - height(10.25)/2)
- 자식 사본 (이전 부착) 정리·InfiniteHorizontalGround Start 영역 자동 재생성

회귀 영역:
- bounds Extents (26.56, 0.50)·정합
- Enemy AnimationController(KinematicObject)·Layer 14↔0 collide 정합
- Background reposition ↔ Ground reposition 독립 LateUpdate·Camera.x 동기

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 22:42:02 +09:00
깃 관리자 832cc07661 feat(BT12-Dev): InfiniteHorizontalGround 컴포넌트 신규 (PD 결정 (나)·Background 패턴)
PD: "Background 밑에 GameObject 배치·맵 최하단·맵에 맞게 사이즈 자동" → "(나) 형태로 진행해"

신규 컴포넌트 — Assets/Scripts/Background/InfiniteHorizontalGround.cs:
- InfiniteHorizontalBackground 동일 패턴·BoxCollider 영역 적용
- Start: BoxCollider size.x 측정 + 자식 사본 2개 (Left·Right) 자동 생성
  자식 BoxCollider는 부모 Static Rb attachedRigidbody 자동 상속
- LateUpdate: Camera.x 영역 BoxCollider 폭 정수 배수 root reposition

Scene 변경 — GameObject (Layer 0·Static Rb·직전 48109f9):
- pos (0.5,0,10) → (0, -4.62, 0)
  Background sprite 최하단 = pos.y(0.5) - height(10.25)/2 = -4.62
- BoxCollider size (1,1) → (53.12, 1.00)
  Background sprite width = 26.56 unit × lossyScale 2 (1.7×배경 추가 영역) = 53.12
- InfiniteHorizontalGround 부착

회귀 영역 X:
- KinematicObject Cast — 자식 BoxCollider + 부모 Static Rb 표준 정합
- Wall LayerMask (1<<0) Layer 0 정합
- Composite Level 비활성·Player·Enemy 1.7배·Background reposition Camera.x 동기

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 22:35:46 +09:00
깃 관리자 93856bc92a fix(BT12-Dev): Player·Enemy localScale × 1.7 + bgImage1 import 정정
PD: "배경 저화질·Player 1.7배·더 효율적 방법" → "C안으로 해"

C안 (Player·Enemy localScale × 1.7) 채택 근거:
- A (배경 1.7배): Player 화면 점유 16% 그대로·PD 의도 미충족
- B (Camera ortho × 1.7): RangeTier maxRange 영향·직전 사거리 fix 회귀
- C (Player·Enemy scale): Camera·RangeTier·배경 영향 없음·최소 변경

변경:
1. Player.prefab transform.localScale (1,1,1) → (1.7, 1.7, 1)
   - sprite bounds 0.66×1.10 → 1.12×1.88 (화면 점유 16% → 27%)
   - BoxCollider·SpriteRenderer 자동 비례 (transform 적용)
2. Enemy.prefab transform.localScale (1,1,1) → (1.7, 1.7, 1)
   - 활성 Enemy 16개 동일 비율 자동 반영
3. bgImage1 import 정정 (저화질 원인):
   - spriteImportMode Multiple → Single (자동 분할 제거)
   - textureCompression Compressed → Uncompressed (RGBA32 원본 화질)
4. Background_BgImage1 SpriteRenderer.sprite 재매핑 (Multiple→Single fileID 전환)

Camera ortho 3.5·RangeTier mults·Wall LayerMask·Composite·GameObject Static Rb
모두 영향 없음. KinematicObject minMoveDistance·shellRadius 절대값 정합.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:57:38 +09:00
깃 관리자 48109f9326 fix(BT12-Dev): GameObject Dynamic Rb→Static + Level 비활성 (PD 의도 정정)
PD: "Level을 안쓰고 GameObject 쓰려는 거야. 닿으면 플레이어가 하늘로
천천히 밀려나는 현상을 수정"

본 PM 자성 #15:
- 직전 commit b0ea32d Level SetActive(true)·Composite·Rb Static 적용은
  PD 의도와 불일치 — Level 영역 사용 X·GameObject 영역 사용
- PD 의도 가설 (Level=정상 지형) → 명시 확인 누락

근본 — MCP 자율 실측:
- GameObject (Layer 0): BoxCollider2D 200×0.5·**Rigidbody2D Dynamic**
- Player KinematicObject (Kinematic Rb) ↔ Dynamic Rb GameObject
  → Newton 3법칙 reaction force → Player 위로 밀려남

fix:
- Level SetActive(false) — PD 의도 정합
- GameObject Rb Dynamic → Static (simulated=true·sleepMode=NeverSleep)
  → Player KinematicObject Cast hit normal=(0,1) → IsGrounded true·velocity 보존

Wall LayerMask (1 << 0) 정합 — GameObject Static Collider Layer 0 hit 정합·
Level 비활성 영향 X.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:36:10 +09:00
깃 관리자 b0ea32d5ac fix(BT12-Dev): Level Tilemap Composite Collider + Static Rb (지형 밀려나는 현상 정정)
PD: "바닥에 플레이어가 닿으면 천천히 밀려나는 현상이 있어. 정상적인 지형처럼 보이도록 수정해줘"

근본 — MCP 자율 실측:
- Level Tilemap (Layer 0): TilemapCollider2D만·CompositeCollider2D NULL·Rb NULL
- Tile 9180개 (10종)·colliderType=Sprite — 각 Tile 별도 BoxCollider
- Tile 경계 hit normal=(±1,0) → Player KinematicObject (KinematicObject.cs:128-173)
  Cast hit normal.y < 0.65 → IsGrounded=false → velocity.x=0 (line 164) → 밀려나는 현상

fix — Composite Collider 표준 패턴:
- TilemapCollider2D.compositeOperation = Merge (Unity 6 — m_UsedByComposite 폐기)
- CompositeCollider2D 추가 (geometryType=Outlines·generationType=Synchronous)
- Rigidbody2D Static (simulated=true·sleepMode=NeverSleep)
- Level GameObject SetActive(true) — 영역 영역 영역 영역 정정
- 결과: Composite pointCount=682·pathCount=35·bounds Extents=(78,12.4)
  → Tile 경계 hit X·외곽선 normal=(0,1)만 → IsGrounded true·velocity.x 보존

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 21:31:31 +09:00
깃 관리자 925d2bbbf3 fix(BT12-Dev): Enemy maxHearts 1 (1 hit kill·즉사 정합) 2026-05-10 17:08:30 +09:00
깃 관리자 5cb6040c8a feat(BT12-Dev): PD 4 지시 — Projectile 거리 제한·벽 충돌·특성 가시화·Icon UI 매핑 (MCP 자율)
PD 지시 (2026-05-10):
1. 투사체 종류 영역 일정 거리 영역 소멸 (Camera width × 1.5)
2. 레이저 외 투사체 영역 벽 충돌 시 소멸
3. 스킬 특성 영역 컨셉 동작
4. 스킬 선택 UI 영역 아이콘 노출

본 PM MCP 자율 진행:

==== PD #1: 거리 제한 ====
Projectile.Initialize:
- _spawnPosition 저장
- _maxRange = Camera.orthographicSize × 2 × aspect × 1.5 (가로 × 1.5)
Projectile.Update:
- Distance(transform.position, _spawnPosition) >= _maxRange → SelfDestruct

==== PD #2: 벽 충돌 ====
Projectile.OnTriggerEnter2D:
- isEnemy 처리 → hit 후 SelfDestruct·return
- Layer 0 (Default·Ground) || Layer 16 (Foreground·발판) → SelfDestruct
- 본 Projectile 영역 = A 카테고리 (레이저 영역 영역 X) — 모든 영역 SelfDestruct 정합

==== PD #3: 특성 가시화 ====
StatusApplier·EnemyStateComponents 영역 — DoT·Stun·Slow·Knockback·DebuffStack 영역 영역 정합 영역.
근본 영역 — Enemy hp 4·damage 5·1hit 즉사 → 효과 시각 X.
정정 — Enemy.prefab maxHearts 1→5 (maxHP 4→20) — A02 DoT·A03 Stun·A14 Slow 영역 4 hit 영역 영역 영역.

==== PD #4: Icon UI ====
SkillCardSlot _icon 매핑 X 영역 — BannerFrame04_Divided 자식 영역 SkillIcon GameObject 신규 추가 + Image 컴포넌트
- anchorMin·max (0.5, 0.7)·sizeDelta (120, 120)·preserveAspect true
- 3 슬롯 영역 _icon 필드 매핑 정합

Scene SkillSelectionCanvas·Enemy 인스턴스 RevertPrefabInstance — prefab 변경 동기화

MCP Play 검증:
- enemyMaxHP 20 ·컴파일 에러 0 ·Icon 매핑 3/3 
2026-05-10 16:23:34 +09:00
깃 관리자 a6e168e86b fix(BT12-Dev): 무한 배경 컴포넌트 InfiniteHorizontalBackground — sprite 재활용 reposition 패턴 (PD 지적 정정)
PD 지적 (2026-05-10):
- "단순히 키운거라서 비효율적 — 리소스를 재활용할 수 있는 기능 구현"

본 PM 자성 — 직전 Tiled DrawMode size (500, 7) 영역 단순 영역 영역 메모리·렌더 영역 비효율. 영역 영역 — Camera 영역 영역 영역 sprite 영역 reposition 패턴 (재활용·효율).

신규 컴포넌트 InfiniteHorizontalBackground.cs:
- Start — sprite 가로 폭 측정 + 자식 사본 2개 (Left·Right) 영역 영역 영역 영역
  → 화면 영역 영역 영역 3 sprite (root + Left + Right) 영역 충분 (sprite > Camera width 정합)
- LateUpdate — Camera 영역 영역 영역 영역 sprite 폭 영역 영역 영역 → root 영역 정수 배수 reposition
  → 자식 사본 영역 영역 영역 영역 따라가 영역 영역 영역 영역 영역 영역
- 효율 — sprite 1개 (Resources 1회·Texture 메모리 재사용)·GameObject 3개

Background_BgImage1 정정:
- DrawMode Tiled → Simple (sprite default size·재활용 패턴 정합)
- Scale (1.77, 1.77, 1) — Camera height fit
- Position (0, 0.5, 10) — World root
- InfiniteHorizontalBackground 컴포넌트 부착

MCP Play 검증:
- SendMessage("LateUpdate") → bgPos 0 → 188.04 reposition 정합
- Camera 150 → bgChild0 (94.02)·bgChild1 (282.07) — Camera 영역 영역 sprite 3 영역 정합
2026-05-10 16:03:55 +09:00
깃 관리자 4855811a41 feat(BT12-Dev): 스킬 6 아이콘 매핑 + 배경 Tiled World 영역 (PD 2 지시·MCP 자율)
PD 지시 (2026-05-10):
1. Layer Lab Icon_PictoIcons 영역 — 6 스킬 영역 어울릴 아이콘 임의 판단·적용
2. 배경 영역 화면 스크롤 자연스러움·반복 영역

본 PM MCP 자율 진행:

==== Part 1: 스킬 6 Icon 매핑 ====
Icon_PictoIcons/256/ 영역 매핑 (어울림·문맥 정합 임의 판단):
- A01 마법 화살      → PictoIcon_Magic       (마법 영역)
- A02 파이어볼       → PictoIcon_Fire        (화염)
- A03 봉인 마법      → PictoIcon_Magic_Ball  (마법 구체·봉인)
- A08 저주의 화살    → PictoIcon_Skull       (저주·해골)
- A14 얼음 창        → PictoIcon_Crystal     (얼음 결정)
- A15 추적 화염구    → PictoIcon_Firework    (추적 화염)

execute_code 영역 — SerializedObject Icon 필드 영역 sprite reference 적용.

==== Part 2: 배경 Tiled World fix ====
Background_BgImage1:
- Camera 자식 영역 → World root 영역 영역 (Player 영역 영역 영역 자연 스크롤)
- Position (0, 0.5, 10)
- DrawMode = Tiled·tileMode = Continuous
- Size (500, 7) — 가로 500 unit·세로 Camera 영역 영역 7 unit 영역
- TextureImporter Mesh Type = FullRect·Wrap Mode = Repeat (Tiled 정합)

MCP Play 검증:
- bgVisible: true 
- bgDrawMode: Tiled 
- Player·Enemy 영역 영역 영역 → 자동 발사 영역 SkillSelectionUI 영역 정합
2026-05-10 15:54:23 +09:00
깃 관리자 f505d47728 feat(BT12-Dev): bgImage1 배경 이미지 추가 (PD 지시·MCP 자율)
PD 지시 (2026-05-10):
- "Assets\Tiles\ 경로에 있는 bgImage1 이미지를 배경으로 보이게 추가해줘"

본 PM MCP 자율 진행:
1. Glob — Assets/Tiles/bgImage1.png 발견 (2048×395·sprite 정합)
2. execute_code — Scene 영역 Background_BgImage1 GameObject 생성·SpriteRenderer 부착
3. Main Camera 자식 영역 영역 — Camera Follow Player 정합·화면 영역 고정
4. local position (0, 0, 10) — Camera z=-9 영역 영역 19 unit 영역
5. local scale (1.77, 1.77, 1.0) — Camera ortho size 3.5 (height 7) / sprite height 3.95 정합
6. sortingLayer Default·sortingOrder -100 — 모든 영역 뒤
7. git add bgImage1.png + meta (untracked 영역 정정)

MCP Play 검증:
- bgPath: Main Camera/Background_BgImage1 
- spriteVisible: true 
- spriteName: bgImage1_0 
2026-05-10 15:47:17 +09:00
깃 관리자 62c8c93e6e feat(BT12-Dev): 스킬 선택 UI Layer Lab BannerFrame04_Divided 적용 (가로형 Magicka 스타일·옵션 C)
PD 결정 (2026-05-10): 옵션 A 즉시 적용 + 가로형 화면 (Magicka 스타일)
실제 적용: 옵션 C — Layer Lab 전체 nested (103 obj·Editor freeze) 회피·BannerFrame04_Divided × 3 직접 추가

본 PM MCP 자율 진행:
1. SkillSelectionCanvas 영역 자식 (SkillSelectionPanel) 제거 → Layer Lab 적용 준비
2. Layer Lab Play_UI_ChoiceSkill nested Instantiate 시도 → Editor freeze (last_heartbeat 정지·103 obj 영역)
3. Editor 강제 종료 (taskkill PID 25912) + PD 재시작 + instance 재연결
4. 옵션 C 적용 — execute_code 영역 직접 구성:
   - SkillSelectionPanel (Image·dim 0.78 alpha·anchor stretch)
   - TitleText (TextMeshPro "기술 선택"·중앙 상단·금색)
   - CardArea (HorizontalLayoutGroup·1500x600·spacing 30·MiddleCenter)
   - SkillCardSlot1·2·3 (Layer Lab BannerFrame04_Divided nested prefab)
5. 각 카드 영역 SkillCardSlot 컴포넌트 부착·Button 부착·필드 매핑:
   - _nameText → BannerFrame04_Divided/Text_Title
   - _descriptionText → BannerFrame04_Divided/Text_Info
   - _topBanner·_highlightFrame → BannerFrame04_Divided/Border
   - _clickArea → 카드 자체 Button (targetGraphic = Bg/Image)
6. SkillSelectionUI _rootPanel·_titleText·_slot1·2·3 매핑
7. Scene 영역 SkillSelectionCanvas instance RevertPrefabInstance 강제 동기화 (Awake _rootPanel=NULL → SkillSelectionPanel 정합)
8. SkillSelectionUI.cs OnCardSelected 정정 — 카드 클릭 → 즉시 _onConfirm.Invoke (Magicka 스타일·Confirm 버튼 부재)

MCP Play 검증:
- [SkillSelectionUI] Awake _rootPanel=SkillSelectionPanel 
- [ExperienceSystem] OnEnemyKilled → GainXP +1 → LEVEL UP Lv.2 
- [LevelUpManager] cards.Count=3 → SkillSelectionCanvas 활성 
- [SkillSelectionUI] Show cards=3 level=2 
2026-05-10 15:35:52 +09:00
깃 관리자 2783c15d56 docs(BT12-MVP-A Phase 2-B B+C·2-1·2-2 통합 완료): SkillSelectionCanvas Prefab + Scene 통합 + 한글 폰트 + 디자인 정정
산출물 (D안 — 기능 우선·그래픽 디테일 차후):

Prefab (신규):
- Assets/Prefabs/UI/SkillSelectionCanvas.prefab — 28 GameObject·Canvas Screen Space-Overlay·Sort Order 200
  - SkillSelectionPanel (anchor stretch·반투명 검정 RGBA(0,0,0,0.78))
  - Header (top stretch 120·베이지 9-slice·"기술 선택" 한글)
  - CardArea (center 1000x700·HorizontalLayoutGroup·SkillCardSlot ×3)
  - Footer (bottom stretch 200·"남은 포인트"·"확인" 노랑 버튼)
  - SkillCardSlot 자식 (TopBanner 갈색·NameText 흰색·IconArea·LevelText/DescriptionText 갈색·ClickArea·HighlightFrame)

한글 폰트:
- Assets/Fonts/NotoSansKR-Regular.ttf (Apache 2.0·Google Noto Sans CJK KR)
- Assets/Fonts/NotoSansKR-Regular SDF.asset (Multi Atlas·Dynamic mode·atlas 2x 2048)
- Assets/TextMesh Pro/Resources/TMP Settings.asset (fallback NotoSansKR 등록)

Scene 영역:
- [LevelUpManager] GameObject + LevelUpManager·SkillCardPlaceholderPool 영역
- Pool _allCards 5 asset 매핑 (A01·A05·P01·P12·AW01)
- LevelUpManager _pool/_ui 영역 매핑
- SkillSelectionCanvas Prefab 인스턴스 영역 SkillSelectionUI 8 field (_rootPanel·_titleText·_slot1·2·3·_pointText·_confirmButton) 영역 매핑

스크립트 (Debug.Log 추가·차후 가드 처리 의무):
- ExperienceSystem.cs (DEFAULT_XP_REWARD 5→1 임시·OnEnemyKilled 진단 Log)
- PlayerProgression.cs (GainXP·LEVEL UP 진단 Log)
- LevelUpManager.cs (HandleLevelUp·_ui.Show 호출 진단 Log)
- LevelXPTableLoader.cs (GetXPToNextLevel return 1 임시·기능 테스트 영역)
- SkillSelectionUI.cs (Awake·Show 진단 Log + gameObject.SetActive 영역)

회귀 영역 정리:
- Phase 2-B B+C MCP 작업 시 SkillSelectionPanel 자식 영역 중복 (Header/CardArea/Footer × 2 + 빈 Panel2) 영역 발견·정리
- Canvas WorldSpace → ScreenSpaceOverlay 정정 (Phase 2-2 manage_components silent fail 영역)
- Image color RGBA(1,1,1,1) → RGBA(0,0,0,0.78) 정정 (execute_code 영역 직접 변경)
- Player·SpawnPoint 영역 BT5-Dev 영역 정상 (본 PM 임시 변경 영역 stash 보존)

본 PM 자성 (영구 등재 의무):
1. manage_components set_property silent fail (Color·RectTransform·Canvas) — execute_code 영역 직접 변경 + 호출 직후 검증 의무
2. manage_gameobject batch 결과 검증 X — ReadMcpResource 호출 후 자식 영역 정합 검증 의무
3. 본 BT 영역 외 영역 임의 변경 금지 (Player·SpawnPoint·Camera·Tilemap·BT5-Dev)
4. TMP_FontAsset 검증 = characterTable.Count만 단정 X·isMultiAtlasTexturesEnabled·atlasPopulationMode·TryAddCharacters 동작 확인 의무
5. "영역" 어휘 무차별 부착 자제 (feedback_pm_filler_word_overuse)
6. PD 명시 외 임의 추가 (한자) 금지

PD 결정 (D안):
- 기능 검증 우선 (한글 표시·카드 UI·레벨업 흐름 정합)
- 그래픽 디테일 (PD 첨부 SD UI 정합) = 차기 BT 영역 후속 (Asset Store sprite 영역 또는 디자이너 영역)

C49 표준 — Phase 1 dev-team-lead 설계 + Phase 2 본 PM MCP 집행 + Phase 3 본 PM 직접 검증 (단순 반복 카탈로그 v1)
2026-05-09 18:00:27 +09:00
깃 관리자 402c416549 auto: 2026-05-08 22:14 · scene: Lobby · 125 files 2026-05-08 22:14:06 +09:00
깃 관리자 32012aa450 BT5-Dev #95: PatrolPath path 영역 제거·velocity 즉시 반대 방향 (PD 명시)
PD 명시 (2026-05-08):
1. 가장자리 좌우 반복 잔존
2. 모든 Enemy의 PatrolPath 제거 + 자동 알고리즘만

정정 (BT95):
1. Scene Ingame.unity Enemy 인스턴스 path 영역 m_Modifications 12건 제거
   - Python 자동 영역 (PrefabInstance 영역에서 propertyPath: path 영역 삭제)
   - PatrolPath GameObject 영역은 Scene 잔존 (영향 X·EnemyController 영역 미참조)
2. EnemyController.cs:
   - PHASE_COOLDOWN 0.5 → 1.0 (긴 영역·좌우 반복 영구 차단)
   - 절벽·벽 검출 시 velocity.x = 0 → velocity.x = -moveDir * maxSpeed (즉시 반대 방향 큰 속도)
   - control.move.x = -moveDir 직접 (1 frame 지연 차단)

효과:
- velocity 영역 즉시 반대 방향 큰 속도 → 가장자리에서 빠르게 멀어짐
- 1초 cooldown = 충분 영역 멀어진 후 검출 활성 → 좌우 반복 X
- PatrolPath path 영역 m_Modifications 제거 = 자동 patrol 영역만 사용 (PD 명시)
2026-05-08 13:50:32 +09:00
깃 관리자 007b4dd61a BT5-Dev #85: Enemy y+0.3·수평 Raycast 폐기 (PD 2건)
PD 보고 (2026-05-08):
1. 몬스터 바닥 뚫고 나옴 (이미지 첨부)
2. 몬스터 여전히 이동 X

진단:
- 버그 1: sprite 발 영역(transform.y - 0.63·sprite half) ↔ Capsule bounds.min.y(transform.y - 0.39) = 0.24m 차이. Capsule 영역 위 Tile 표면 → sprite 영역 발이 0.24m 침투 → 시각상 침투
- 버그 2: BT83/BT84 수평 벽 Raycast 영역(bounds 외부 + 0.5m)도 옆 Tile (평지 인접) 검출 → 거짓 양성 → 매 frame phase 강제 → 모든 Enemy 정지

정정 (BT85):
1. transform.y 추가 +0.3 (Enemy.prefab 1.532→1.832 + Scene 인스턴스 19건 +0.3)
2. EnemyController.cs:
   - 수평 벽 Raycast (BT83/BT84 영역) 폐기
   - wallCheckDistance Inspector 영역 폐기
   - stuckThresholdTime: 0.3→0.5 (BT81 영역 회복·정상 이동 미세 영역 거짓 양성 차단)
   - 절벽 검출 영역 그대로
   - stuckTimer 영역 그대로 (벽 정지 시 0.5초 후 다음 phase 강제)

효과:
- 시각상 발 영역 침투 X (transform.y +0.3 → 총 +0.8 from 원본)
- 정상 patrol 영역 = stuckTimer 영역 0 (frame당 transform.x 변경 큰 영역)
- 벽 영역 정지 시 = stuckTimer 영역 0.5초 누적 → 다음 phase 강제
- 절벽 영역 = footAhead Raycast 영역 (Layer 0+16) 검출 → 시작 위치 복귀

후속 의무:
- PD Refresh+Play 시각 검증
2026-05-08 11:52:05 +09:00
깃 관리자 3591bd218f BT5-Dev #80: 몬스터 y+0.5 + 자동 patrol + 절벽 검출 (PD 3건 일괄)
PD 명시 (2026-05-08):
1. 몬스터 바닥 살짝 뚫고 들어감 → y +0.5 (Enemy.prefab + Scene 인스턴스)
2. PatrolPath 폐기 → 생성 위치 기준 좌/우 random 100~150 왕복 자동 patrol
3. 절벽 검출 → 낭떠러지 떨어지지 않도록

변경:

1. Enemy.prefab transform.y: 1.032 → 1.532
2. Scene Ingame.unity Enemy 인스턴스 16개 m_LocalPosition.y override 영역 +0.5 일괄 (19건)
3. EnemyController.cs:
   - patrol 4-phase 영역 (0: 우측 random / 1: 시작 복귀 / 2: 좌측 random / 3: 시작 복귀)
   - SetNextPatrolTarget — Random.Range(100, 150) 영역 + phase별 _targetX 계산
   - Update 영역 자동 patrol 로직 (PatrolPath path 영역 폐기·legacy 호환만)
   - 절벽 검출 — 발 앞 0.6 + 발 아래 0.8 Raycast 영역 지면 X 시 시작 위치 즉시 복귀
   - Inspector 노출: patrolMinRange·patrolMaxRange·patrolArriveThreshold·cliffCheckDistance·cliffCheckDepth·groundLayerMask
   - BT17 marker Debug.Log 영역 폐기 (시행착오 정리)

효과:
- 모든 Enemy 인스턴스 (path 미설정 영역 포함) 자동 patrol 작동
- 시작 위치 기준 ±100~150 random 왕복 패턴
- 절벽 영역 검출 시 시작 위치 즉시 복귀 (낭떠러지 X)
- y +0.5 = 발 영역 지면 위 정합
2026-05-08 11:28:35 +09:00
Ino 57c2ebc71e 로비 ui 등 2026-04-28 17:01:58 +09:00