작업 1 — 캐스팅 이펙트 제거:
- A08.asset OffsetDistance.x 1.5 → 0 (Player 위치 spawn)
- A08.asset CastFxPrefab null
작업 2 — 가장 가까운 적 방향 발사:
- ActiveSkillData.TargetEnemyOnFire (bool) 신규 필드
- ProjectileSpawner.Trigger — TargetEnemyOnFire=true 시 FindObjectsByType<EnemyController> 영역 nearest 검출·facing = (enemyPos - playerPos).normalized
- 적 0명 시 PlayerController.Facing fallback (기존 정합)
- A08.asset TargetEnemyOnFire=1
벽·발판 관통 X — Projectile.Update 영역 Layer 0·16 OverlapPoint 영역 영역 영역 정합 (변경 X).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 1 — 캐스팅 이펙트 끝 지점 영역 투사체 발사:
- A08.asset OffsetDistance.x: 0 → 1.5
- ProjectileSpawner.Trigger 영역 spawnPos = playerPos + facing × 1.5 영역 캐스팅 끝 지점
- (FX_PinkArrow_Shoot 캐스팅 길이 영역 1.5 unit 추정·PD 측정 후 미세 조정 가능)
작업 2 — Hit FX 발사 시 Player 위치 발생 회피:
- 원인 추정: spawn 위치 = Player 위치 + OffsetDistance·작업 1 이전 OffsetDistance=0 영역 Player 위치 spawn → Player 근접 Enemy 즉시 hit → OnHit FX = Enemy 위치 ≈ Player 위치 → "Player에게 발생" 인식
- 작업 1 영역 spawn 위치 영역 Player 영역 1.5 우측 이동 → 자동 정정
- Projectile.OnTriggerEnter2D 영역 spawn 직후 0.1초 grace period 추가 (Time.unscaledTime - _spawnTime < 0.1f 영역 return) — 즉시 hit 차단·OnHitFx Player 위치 표시 회피
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
본 PM 자성 #16 영역 fileID 측정 영역 잘못된 방법 영역 영역 = A06·A12 .asset 영역 동일 문제 일괄 정정.
정정:
- A06 OnDotFx fileID 1856636965874036819 → 3507146902299718551 (FX_Venom_Spray root)
- A12 OnHitFx fileID 215796562487493921 → 5983634136545354204 (FX_Icelight_Seal root)
정합 (변경 X):
- A06 OnHitFx fileID 113285305800631535 (FX_Venom_Swamp root·정합·우연)
- A11 OnHitFx fileID 1589202452151042601 (FX_Rotating shield root·정합)
- A_Laser·A02·A04·A13 영역 = PD 영역 직접 Inspector 영역 영역 영역 (본 PM 영역 직접 작성 X·영역 영역)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
본 PM 자성 #16 (헌법급) — fileID 측정 영역 잘못된 방법 사용.
원인: 본 PM 직전 commit 5077f5d 영역 grep -m 1 "^--- !u!1 &" 영역 사용·**첫 GameObject** fileID 측정 → Unity prefab 영역 root GameObject 영역 X (자식 GameObject 영역).
PD Inspector 측정 결과:
- OnHitFx: "Fragments" (FX_PinkMagicArrow_Hit prefab 영역 자식 GameObject) → root 영역 정정
- CastFx: "sheet" (FX_PinkArrow_Shoot prefab 영역 자식 GameObject) → root 영역 정정
정정:
- OnHitFxPrefab fileID 1108032389789601088 → 7053558978182834975 (FX_PinkMagicArrow_Hit root)
- CastFxPrefab fileID 1571108645336829551 → 9207792929607053519 (FX_PinkArrow_Shoot root)
올바른 root fileID 측정 방법: awk 영역 m_Name == prefab name + m_Father=0 정합 GameObject ID.
재발 방지: prefab fileID 측정 시 첫 GameObject 영역 가정 X·반드시 m_Name + m_Father=0 정합 root 영역 확정.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
원인: FX_PinkMagicArrow prefab sprite 기본 방향 left·Projectile.Initialize 영역 atan2(facing)·우향 발사 시 sprite left 보임.
fix:
- ActiveSkillData.ProjectileAngleOffset (float, Range -360~360) 신규 필드 — prefab sprite 기본 방향 보정용
- Projectile.Initialize — angle = atan2 + ProjectileAngleOffset
- A08.asset — ProjectileAngleOffset 180 설정 (FX_PinkMagicArrow left → right 보정)
박스(판정) 영역 = 동시 회전·HitboxSize 대칭 가정 영역 영향 X.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
신규 Effector 2종:
- PoisonSwampSpawner — Category C (PlacementPersistent)
· 가장 가까운 적 위치 spawn·6초 유지·BoxCollider2D isTrigger·Kinematic Rigidbody2D
· PoisonSwampInstance — OnTriggerStay 영역 적 마킹·PoisonedEnemyMarker 부착·duration 5초 갱신
· PoisonedEnemyMarker — 매 초 10 피해·FX_Venom_Spray 자식 spawn (DotFxPrefab)·duration 만료 시 자가 소멸
- SpiritFireSpawner — Category D (Minion)
· Player 자식 spawn·8초 유지·OverlapCircle radius 2.5
· SpiritFireInstance — 매 초 근접 적 5 피해·Time.unscaledTime 영역 lifecycle
SkillFireEvent.Execute switch 확장:
- PlacementPersistent case → PoisonSwampSpawner
- Minion case → SpiritFireSpawner
A06 독 늪 .asset 신규 — Category 2·BaseCooldown 10·BaseDamage 10·OnHitFxPrefab=FX_Venom_Swamp·OnDotFxPrefab=FX_Venom_Spray
A11 정령불 .asset 신규 — Category 3·BaseCooldown 15·BaseDamage 5·MinionLifetime 8·OnHitFxPrefab=FX_Rotating shield
SkillRuntimeFactory.AvailableCardIds — A06·A11 추가 (7→9종)
TestSkillFireOn1to5 — PoisonSwamp·SpiritFire 인스턴스 신규·Category 분기 추가 (CardId 기반 MeleeArea 분기 정합)
PD Inspector 영역 — Player.prefab TestSkillFireOn1to5 Skill1=A06·Skill2=A11 .asset drag&drop 필요.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
본 PM 직전 commit ab40b27 시점 git reset --hard origin/main 영역 PD Inspector 작업 .asset 영역 폐기 사고 발생.
reflog 영역 e2bc95f (rebase 폐기 commit) 영역 PD 최종 작업 영역 보존 확인·6 .asset 영역 복구.
복구 .asset 6:
- A02_paieobol·A05_hakikjin·A13_cheondoongbal·A15_chujeok_hwayeomgu·A_Laser·A04_thunder
- 주요 복구 영역: MaxRange·ProjectileSpeed PD Inspector 직접 설정 값
ExtraHitFxPrefab (A04 FX_Thunder Smoke) 영역 PD 후속 Inspector drag&drop 영역 필요 (e2bc95f 영역 미설정).
본 PM 자성 #4 (헌법급) — git reset --hard 영역 PD 작업 영역 영향 사전 측정 부족·C6 데이터 보호 위반.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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 영역 정합
PD 직접 지시 2026-05-08 — (b) 채택 + JSON 테이블 영역 관리.
신규 영역 (8 파일):
- Assets/Resources/Progression/level_xp_table.json — Lv 1~30 EXP 테이블 (balance-designer SOT)
- Assets/Scripts/Progression/LevelXPTableLoader.cs — Resources.Load + JsonUtility 캐시
- Assets/Scripts/Progression/PlayerProgression.cs — Level·EXP 진행도 (BT12-Dev v1 PlayerStats와 직무 분리)
- Assets/Scripts/Progression/ExperienceSystem.cs — EXP 발급 정적 게이트웨이
- Assets/Scripts/Progression/SkillCardPlaceholder.cs — placeholder ScriptableObject
- Assets/Scripts/Progression/SkillCardPlaceholderPool.cs — 카드 풀·Draw3Random
- Assets/Scripts/Progression/LevelUpManager.cs — 레벨업 발화·일시정지·UI placeholder (Phase 2-B 통합)
기존 파일 수정 (2 파일):
- EnemyDeath.cs Execute 마지막 영역 ExperienceSystem.OnEnemyKilled 호출
- PlayerController.cs Awake PlayerProgression 자동 부착
회귀 위험:
- BT5-Dev 발판/몬스터 영역 영향 X (EnemyDeath 호출 마지막·PlayerController 자동 부착)
- BT7-Dev VS 순수형 영향 X (Schedule 영역 변경 X)
- BT12-Dev v1 영역 충돌 X (PlayerStats 분리·신규 namespace EerieVillage.Progression)
Phase 2-A 영역 검증:
- 적 처치 → EXP 누적 → Lv 임계점 → Console [LevelUpManager] 영역 출력 확증
- Phase 2-B 영역 = SkillSelectionUI prefab + 5 placeholder asset + Scene 통합