작업 1 — 피격 이펙트 상위 sortingOrder:
- Projectile.OnTriggerEnter2D OnHitFx — Renderer.sortingOrder += 100
- LightningStrikeSpawner OnHitFx + ExtraHitFx — 동일
- MeleeAreaSpawner fxGo — 동일
- LaserSpawner fx — 동일
- Enemy SpriteRenderer 영역 위·뒤쪽 가림 회피
작업 2 — 적 추적 각도 하단 보정:
- ProjectileSpawner.Trigger TargetEnemyOnFire 영역 toEnemy.y -= 0.5
- 적 transform.position 영역 상단 영역·hitbox 영역 영역 영역 적중 정합
- A08 영역 영역 영역 영역 영역 영역 적 hitbox 영역 영역 영역 적중
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 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>
원인: SelfDestruct 영역 즉시 Destroy(gameObject) → ParticleSystem 영역 진행 영역 trail·glow particle 즉시 사라짐 → 발사 영역 영역 영역 매번 시각 cut → "뚝뚝 끊기는" 인식.
fix:
- _fadeOutStarted flag — 중복 호출 차단
- Collider2D·_debugBoxTransform disable — 판정 종료
- _speed = 0 — 이동 정지
- ParticleSystem.Stop(true, StopEmitting) — emission 정지·기존 particle 자연 fade
- Destroy(gameObject, 0.5f) — 0.5s 후 Destroy (기존 particle lifetime 영역 자연 fade 완료)
- FADE_START_RATIO 0.8 → 0.85 (sprite fadeout 영역 영역 영역·자연 영역 영역)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
원인: fx.transform.localScale *= HitFxScale 영역 적용·그러나 ParticleSystem.MainModule.scalingMode 영역 = Local·Shape 영역 영역 영역 root scale 영역 영역 X·ParticleSystem 영역 자체 size 영역 영역 영역 영역.
fix: 모든 fx spawn 영역 ParticleSystem foreach 영역 영역 ScalingMode = Hierarchy 설정 + Play(true) 동시. Hierarchy 영역 = parent Transform scale 영역 정합 적용.
전수 적용 (7 파일):
- Projectile.OnTriggerEnter2D — OnHitFx
- ProjectileSpawner.Trigger — CastFx + ProjectilePrefab
- MeleeAreaSpawner.Trigger — fxGo
- LightningStrikeSpawner — OnHitFx + ExtraHitFx
- LaserSpawner.Trigger — fx
- PoisonSwampSpawner — swampGo + Marker.Tick fx
- SpiritFireSpawner — shieldGo
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>
원인: CastFx Instantiate 영역 = Quaternion.Euler(0, 0, data.FxRotation) (=0) 영역. FX_PinkArrow_Shoot sprite left 기본 → 시전 영역 sprite left 표시·Player right 발사 방향과 반대.
fix:
- ProjectileSpawner.Trigger CastFx — facing angle + ProjectileAngleOffset + FxRotation 적용 (Projectile 본체 동일 패턴)
- 진단 Debug.Log 2종 회수 ([ProjectileSpawner] card·CastFx spawned·[Projectile] OnHit) — fileID 정정 완료·root 원인 확정 후 revert
A08 영역 ProjectileAngleOffset=180 영역 정합 (sprite left → right) → CastFx·Projectile 동일 방향.
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>
원인: 직전 aa6cef1 영역 Debug.Log interpolated string 영역 `\"NULL\"` escape 사용·C# interpolated string escape 미지원 → 컴파일 에러.
fix: ternary 결과 영역 변수 분리 (castName·projName·hitName).
본 PM 자성 #15 — Edit 후 컴파일 사전 검증 누락. Unity Editor 영역 컴파일 영역 영역 영역 본 PM 영역 X 영역 영역 = PD 영역 보고 후 영역. C# string escape 영역 사전 측정 의무.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
A08.asset 영역 ProjectilePrefab·OnHitFxPrefab·CastFxPrefab GUID 정합 측정 정합·코드 정합. 그러나 PD 영역 시전·피격 X 보고 → 실측 진단 필요.
진단 Log 2종 (회수 의무·PD Console 측정 후 본 PM revert):
- ProjectileSpawner.Trigger — [ProjectileSpawner] card·CastFx·ProjPrefab·OnHitFx 매핑 측정·CastFx spawn 확인
- Projectile.OnHit — [Projectile] OnHit card·OnHitFx spawn name·pos 확인
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>
직전 b1b476a 영역 PoisonSwamp·SpiritFire 영역만 명시 Play 적용·나머지 4 Spawner + Projectile 영역 누락.
전수 적용:
- MeleeAreaSpawner.Trigger — OnHitFx (A05·A12 등) 영역 Play
- LightningStrikeSpawner.Trigger — OnHitFx·DelayedExtraHitFx Play
- LaserSpawner.Trigger — fx (A_Laser OnHit) Play
- ProjectileSpawner.Trigger — ProjectilePrefab (A02·A08 FX_PinkMagicArrow 등)·CastFxPrefab (A08 FX_PinkArrow_Shoot) Play
- Projectile.OnTriggerEnter2D — OnHitFx (A02·A08 등) Play
원인: 신규 import prefab 영역 playOnAwake 영역 정합 X 가능성 또는 Instantiate 시점 영역 Awake 호출 X·명시 Play 안전망 누락.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
원인 추정:
- PoisonSwampInstance 영역 BoxCollider2D·Rigidbody2D 영역 FX root 직접 부착 → ParticleSystem 영역 영향 가능
- Instantiate playOnAwake 정합·그러나 명시 Play() 호출 안전망 영역 누락
fix:
- PoisonSwampSpawner.Trigger — FX root 영역 GetComponentsInChildren<ParticleSystem>(true) 영역 명시 ps.Play(true)
- PoisonSwampInstance — BoxCollider2D·Rigidbody2D 영역 자식 GO 분리 (PoisonSwamp_Collider)·FX root 영역 visualRoot 보관·duration 종료 시 함께 Destroy
- PoisonedEnemyMarker.Tick — FX_Venom_Spray 영역 동일 ParticleSystem.Play(true) 명시 호출
- SpiritFireSpawner.Trigger — 동일 명시 Play(true) 호출
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>
원인:
- Unity Input System Package 활성 (activeInputHandler=1) + UGUI 영역 StandaloneInputModule 영역 어딘가 자동 부착 → UnityEngine.Input.mousePosition 호출 → InvalidOperationException
- Assets/Scenes/ParticleGroupView (2).cs (Scenes 폴더 영역 비정상 .cs·미사용·StandaloneInputModule 동적 부착 코드) — working tree 영역 삭제
fix:
- ProjectSettings.asset activeInputHandler: 1 → 2 (Both: 두 입력 시스템 호환)
- 기존 Input System Package 코드 (PlayerController·InputSystem_Actions·TestSkillFireOn1to5) 영향 X
본 PM 자성 #13 — Asset Package import 영역 ParticleGroupView (2).cs 영역 Scenes 폴더 영역 비정상 위치·미사용 잠재 위험 코드 사전 측정 누락.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
원인: LightningStrikeSpawner.Trigger 영역 candidates.Count == 0 시 즉시 return → 적 0명 영역 발동 X.
fix: candidates 0 시 Player 위치 영역 fallback (primaryPos = inventory.transform.position) → 일정 쿨타임 자동 발동.
A05 MeleeAreaSpawner·A_Laser LaserSpawner = Player 위치 기준 발동·적 무관 영역 이미 정합.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 1 — 스킬 배워도 이펙트 X fix:
- SkillFireEvent.Execute — MeleeArea case 추가 (CardId 분기·TestSkillFireOn1to5 동일 패턴)
- A04 → LightningStrikeSpawner
- A_Laser → LaserSpawner
- 기타 → MeleeAreaSpawner
작업 2 — 맵 이동 중 이펙트 잔상 재발 fix:
- 원인: Object.Destroy(fxGo, t) 영역 second timer 영역 Time.timeScale 영향·timeScale=0 (LevelUp) 영역 호출 정지
- 신규: FxAutoDestroyUnscaled MonoBehaviour — Update 영역 unscaledTime lifetime check 자가 Destroy
- ProjectileSpawner·Projectile·MeleeAreaSpawner·LaserSpawner·LightningStrikeSpawner 모두 영역 Object.Destroy(fx, t) → FxAutoDestroyUnscaled.Attach
- LightningStrikeSpawner.DelayedExtraHitFx — WaitForSeconds → WaitForSecondsRealtime (timeScale=0 영역 정합)
본 PM 자성 #12 — feedback_new_code_existing_system_dependency_unmeasured 위반. Object.Destroy(go, t) 영역 timeScale 영향 사전 측정 누락 (Unity 표준 API).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
근본 원인:
- Time.timeScale=0 (LevelUp 카드 선택 모드) 영역 Time.time 정지 → Invoke(SelfDestruct, lifetime) 영역 호출 X → 영원 잔존
- _spawnTime = Time.time 영역 = lifetime backup check 영역 영역 X
fix:
- _spawnTime = Time.unscaledTime (timeScale 무관)
- Update 영역 lifetime check — Time.unscaledTime - _spawnTime > _lifetime 영역 강제 SelfDestruct
- Wall grace period — Time.unscaledTime 영역 정합
- Invoke 폐기·CancelInvoke 추가 안전 (Initialize 영역 잔존 Invoke 차단)
본 PM 자성 #11 — Time.time vs Time.unscaledTime 영역 사전 측정 누락. Projectile 영역 lifecycle 영역 timeScale 영역 영향 영역 사전 측정 의무 누락.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 1 — 죽는 모션 종료 시점 팝업 UI:
- LevelUpManager — Player 사망 상태 영역 HandleLevelUp 호출 시 _pendingLevels 영역 저장
- Update 영역 매 frame Player IsAlive·!_isLevelUpActive check → pending 영역 ShowLevelUpUI 표시
- 죽는 모션 동안 LevelUp 즉시 표시 X·부활 후 표시
작업 2 — Player 사망 모션 y -0.3 추가 (누적 -0.6):
- PlayerDeath.Execute — new Vector3(0f, -0.6f, 0f)
작업 3 — 투사체 잔상 강화 fix + 진단:
- Projectile.Update — lifetime + 0.5 backup 강제 SelfDestruct (Invoke 누락 안전망)
- Projectile.Initialize — [Projectile][Initialize] 진단 Log (회수 의무)
- ProjectileSpawner.Trigger — [ProjectileSpawner] 진단 Log (회수 의무)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
원인: ProjectileSpawner.Trigger 영역 BoxCollider2D.isTrigger=true 활성 (단계 2) 직후·Initialize (단계 3) 이전 OnTriggerEnter2D 발화 가능 → _runtime=null → NullReferenceException line 187 → SelfDestruct 미호출 → 영구 잔존.
fix:
1. OnTriggerEnter2D 영역 `_runtime == null || _data == null` defensive return
2. Update 영역 `_data == null` 시 즉시 SelfDestruct (잔존 차단)
본 PM 자성 #10 — race condition 사전 측정 누락. ProjectileSpawner.Trigger 영역 collider 부착 시점·Initialize 호출 시점 영역 사이 OnTriggerEnter2D 발화 가능성 사전 측정 X.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 1 — Player 죽는 모션 X fix:
- PlayerDeath.Execute — SetTrigger("hurt") → SetTrigger("hit") (Player.controller parameter 정합: velocityX·velocityY·grounded·attack·dead·hit·combatidle·resurrect·hurt 없음)
- animator.updateMode = AnimatorUpdateMode.UnscaledTime 추가 (EnemyDeath 영역 동일·timeScale=0 영향 차단)
작업 2 — 부활 모션 중 움직임 fix:
- PlayerSpawn.Execute — Rigidbody2D.simulated=true 복원 폐기 (즉시 X)
- EnablePlayerInput.Execute — Rigidbody2D.simulated=true 복원 추가 (2초 후·부활 모션 종료 시점)
- using UnityEngine 추가 (CS0246 회피)
작업 3 — 투사체 잔상 진단 (회수 의무):
- Projectile.SelfDestruct — [Projectile][SelfDestruct] Debug.Log
- Projectile.OnDestroy — [Projectile][OnDestroy] Debug.Log (Destroy 외 경로 검출용)
- PD Console 측정 결과 영역 본 PM 근본 fix 후 revert
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
이전 commit 3a672f0 영역 Rigidbody2D 참조 추가 시 using UnityEngine 영역 누락.
fix: 첫 줄에 using UnityEngine 추가.
본 PM 자성 #8 — 신규 type 영역 (Rigidbody2D) 사용 영역 namespace using 영역 사전 검증 누락.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 1 — Player 사망 사라지는 현상 fix:
- PlayerDeath.Execute — Rigidbody2D.simulated=false (gravity 정지·제자리 사망·낙사 차단)
작업 2·3 — 제자리 부활·부활 모션·2초 무적 깜박:
- PlayerSpawn.Execute — Teleport 폐기 (spawn point 영역 → 제자리)
- player.health.Resurrect() 호출 (currentHP=maxHP·invulnerableUntil=2초·Animator dead=false·resurrect Trigger)
- Rigidbody2D.simulated=true 복원
- PlayerInvulnerabilityFlash 영역 IsInvulnerable 자동 깜박 (2초)
- 2초 후 EnablePlayerInput (조작 가능)
작업 4 — FX 잔상 safety cap 5초:
- LaserSpawner.Trigger — fx Object.Destroy 누락 fix (LaserSpawner 영역 본 영역 영역 영역 직접 원인 가능)
- LightningStrikeSpawner.AutoDestroyFx — cap
- MeleeAreaSpawner.Trigger — cap
- Projectile.AutoDestroyOnParticleEnd — cap
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Projectile.OnTriggerEnter2D 영역 동족 Projectile skip (Wall·Enemy 판정 이전).
원인: fallback Projectile GO 영역 default Layer 0 영역 → 다른 Projectile 영역 isWall=true 판정 → 양쪽 SelfDestruct.
fix: other.GetComponent<Projectile>() != null 시 즉시 return.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 1 — 사망 모션 y -0.5 → -0.3 (EnemyDeath·PlayerDeath)
작업 2 — 게임 시작 시 파이어볼 투사체 정지·잔존 fix:
- ProjectileSpawner.Trigger — facing.sqrMagnitude < 0.01f 시 Vector2.right fallback
- 원인: Player.Facing 영역 (0,0) 영역 → _direction = (0,0) → _speed × deltaTime × (0,0) = 0 → 정지
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
SkillCardSlot.Bind 영역 card.Icon == null fallback:
- _icon — 동적 원 sprite (32×32 알파) + 속성별 색상 (Fire 주황·Frost 하늘·Dark 보라·Lightning 노랑·Physical 흰)
- _glowEffect — 동일 sprite + alpha 0.3 (동심원 빛 효과 정합)
- GetFallbackIconSprite·GetColorByAttribute static helper (정적 캐싱)
- card.Icon 설정 시 정상 sprite 사용 (PD 후속 정식 아이콘 자산 추가 시 자동 정합)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EnemyDeath·PlayerDeath Execute 영역 death Animator Trigger 직전 transform.position.y -= 0.5 적용.
sprite 위로 떠 보이는 현상 정정·collider·gameplay 영향 X (Enemy 1초 후 Destroy·Player PlayerSpawn 시 위치 reset).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 1 — Enemy HP 30~40 자동 fallback:
- Health.Awake — RandomMaxHPRange 미설정 + EnemyController 존재 검출 → maxHP = Random.Range(30, 41) 자동
- PD Inspector 설정 의존 폐기 (PD가 매번 직접 영역 안전 X)
작업 2 — Player 피격 distance 기반 강화 + 진단 Debug.Log (회수 의무):
- EnemyController.Update — VisualBounds.Intersects OR distance < 1.5f 단일 조건 fix
- [EnemyHit] 단일 prefix Debug.Log — dist·boundsHit·distHit·invuln·Enemy/Player pos·t
- PD Console 측정 결과 영역 근본 fix 후 본 PM revert
- 본 PM 자성 #7 — 직전 IsGrounded 폐기 fix 효과 X 자인·다른 가설 (Bounds 미 교차) 강력화
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- PlayerSkillInventory.StartingCardIds (string[]) Inspector 필드 신규 — 기본 { "A02" }
- Start() 메서드 신규 — Resources 로드 완료 후 시점에 AddSkillByCardId 일괄 호출
- 다중 스킬 지원·잘못된 CardId 자동 skip (AddSkillByCardId LogWarning 정합)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 1 — A05·A_Laser 박스 SpriteRenderer.enabled 누락 정정:
- MeleeAreaSpawner·LaserSpawner 영역 직접 GO 생성·SpriteRenderer 부착 (HitboxDebug 미경유 영역).
- sr.enabled = HitboxDebug.ShowDebugVisuals 1줄 추가 (재활용 toggle 정합).
작업 2 — Player 피격 X 진단 Debug.Log 추가 (회수 의무):
- EnemyController.Update L387-396 — VisualBounds.Intersects(Player.Bounds)·IsGrounded·IsInvulnerable 측정.
- [EnemyHit][Intersect] (조건 측정)·[EnemyHit][Decrement] (실제 호출) 2종 prefix.
- PD Console 측정 후 본 PM 가설 검증·근본 fix 후 Debug.Log 회수.
- 본 PM 가설: (1) Enemy patrol 거리 영역 Player 근접 X (2) Enemy maxHearts=1 자동 공격 즉시 처치 (3) IsGrounded false 영역 통과.
feedback_pm_root_diagnosis_priority 정합 — 가설 추정 사전 진단 우선.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
작업 1 — 디버그 박스·사거리 박스 시각화 off (재활용 toggle):
- HitboxDebug.ShowDebugVisuals 정적 플래그 신규 (false 기본·true 설정 시 즉시 노출)
- Spawn·AttachSprite·SpawnRange·SpawnHitboxDebugChild 4 위치 SpriteRenderer.enabled 정합
- GameObject 자체는 정상 spawn → LiveHitboxSync 등 부착 코드 무영향
작업 2 — 레벨업 카드 풀 5종 한정:
- SkillRuntimeFactory.AvailableCardIds HashSet (A02·A13·A04·A05·A_Laser)
- RandomDraw3 영역 화이트리스트 필터 추가
- 미완성 placeholder (A01·A03·A08·A14·A15) 카드 풀 제외
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>
원인: MeleeAreaSpawner 이펙트 spawn 후 SetParent 미적용.
spawn 시점 world 좌표에서 freeze 되어 Player 전진 시
이펙트가 뒤로 밀려 보이는 현상.
박스(판정) 는 이미 Player 자식 부착이라 동조 정상.
정정:
- fxGo.transform.SetParent(inventory.transform, true)
- worldPositionStays=true 로 spawn 직후의 world 위치·rotation·scale 유지
+ Player 이동에 자동 동조.
검증 (Play 모드):
- Player x: -7 → -5 (Δ+2.0) 이동
- FX worldPos: -6.80 → -4.80 (Δ+2.0) ✓
- BOX worldPos: -7.00 → -5.00 (Δ+2.0) ✓
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
원인: Scene Assets/Scenes/Ingame.unity 에 이전 Edit Mode 측정 잔존 spawn 6건 영구 저장
- FX_Lightningball(Clone) × 3 (각각 ProjectileHitbox_Debug × 1 자식)
- FX_SLASH(Clone) × 2
- FX_Dragonfire(Clone) × 1
정정 1: Scene 잔존 spawn 6건 일괄 삭제 + Scene 재저장 (Ingame.unity).
정정 2: 모든 runtime spawn GameObject 에 HideFlags.DontSave 부여
(HitboxDebug · Projectile · LaserSpawner · MeleeAreaSpawner ·
LightningStrikeSpawner · ProjectileSpawner · EnemyStateComponents)
→ Scene 저장 시 무시 + Play→Stop 자동 cleanup.
검증: Play 모드 1회 발사 시 박스 1개만 spawn (LaserHitbox_Debug 1·
A13 ProjectileHitbox_Debug 1) · Stop 후 Scene 잔존 0건 확인.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
자동 sync 영역 누락된 Font asset 변경 1건 정리 commit.
이전 자동 commit 0596e2c (2026-05-13 01:48) 영역 포함된 본 PM 작업물:
- 카메라 정합 (ortho 4.5·TargetOffset 1.95·Damping.y 0.3·DeadZone 0)
- Enemy maxHP 20·Hit/Hurt Animator·DoT 깜빡 효과
- A02 파이어볼 이펙트 (FX_Fireball_Bullet·FX_FireHit_02·FX_Fire(Cartoon)·페이드아웃)
- A04 번개 충격 (FX_Thunder·20% 축소·4/5 시점 데미지)
- A05 학익진 (MeleeAreaSpawner·FX_SLASH)
- A_Laser 용염 레이저 (LaserSpawner·FX_Dragonfire·40프레임 후~소멸까지 tick)
- A13 천둥발 변경 (PiercingProjectile·FX_Lightningball·관통·0.2s 영역)
- TestSkillFireOn1to5 (1~5 키 영역 5 스킬 발사 테스트)
- Health.DecrementBypassInvuln·EnemyDeath DoT 연결·Projectile fade·방향 회전
PD: "여전히 에러 발생중 — ArgumentException SceneObjectGuid Register"
근본:
- 직전 commit 4714299에서 Scene Player의 SceneObjectGuid 제거했으나
- Unity Tutorial Framework 패키지 (com.unity.learn.iet-framework 5.0.3) 자체 활성
- OnValidate hook이 잔존 SceneObjectGuid 등록 시도 → 중복 GUID dictionary 등록
fix:
1. Packages/manifest.json — com.unity.learn.iet-framework 의존 제거
2. Scene 추가 SceneObjectGuid 폐기 (Token 1개 잔존 확인·폐기)
3. Tutorial 패키지 자체 제거 → OnValidate hook 영역 제거·근본
회귀 영역 X:
- Tutorial Framework는 Unity 학습용·게임 로직 무관
- 다른 패키지 영향 X
PD Editor 재시작 권고 — Library/PackageCache 영역 reload 후 SceneObjectGuid type 완전 제거.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
PD: "ArgumentException: An item with the same key has already been added.
Key: 853d1d12-048e-49ae-b0d4-916bccd493cf
Unity.Tutorials.Core.SceneObjectGuidManager.Register"
원인:
- Unity Tutorial Framework SceneObjectGuid 컴포넌트가 Player에 잔존
- Editor OnValidate·Variant prefab 영역 등록 시 GUID dictionary 중복 → ArgumentException
fix:
- Scene 영역 SceneObjectGuid 컴포넌트 폐기 (Player 1개)
- Enemy.prefab·Variant 6 prefab 영역 SceneObjectGuid 확인 (모두 부재)
회귀 영역 X:
- Tutorial Framework 미사용·SceneObjectGuid 게임 로직 의존 X
- Player·Enemy·Animator 영역 영역 X
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>