Commit Graph

8 Commits

Author SHA1 Message Date
깃 관리자 171506e16d feat(BT12-Dev-Clone): A10 분신 스킬 4단계 완전 구현
PD 명세 5항목 + PD 결정 4건 정합:
- 위치: facing 반대 1유닛 (CloneInstance.SpawnOrReplace)
- 외형: 반투명 alpha 0.5 (SpriteRenderer 복제)
- 동작: 동일 스킬 미러링 (OnPlayerSkillFired hook + 0.5초 지연 큐)
- 공격력: 50% 반감 (CalculateEffectiveDamage IsCloneFireActive 분기)
- 타이밍: 0.5초 딜레이 (FIRE_DELAY_SECONDS)
- BaseCooldown 25초·MinionLifetime 12초·facing 고정·무적(Collider 미부착)
- Lv 업 메커니즘: 분신 수 X·지속시간+데미지 비율 ↑ (balance 후속)

신규 4 (CloneInstance·CloneEffector·A10_bunsin.asset·CloneSkillTests + .meta)
수정 10 (PlayerSkillInventory·ActiveSkillRuntime·SkillFireEvent·SkillRuntimeFactory·6 Effector)
γ helper: PlayerSkillInventory.GetSpawnAnchor·GetSpawnFacing — 6 Effector 진입점 단일화
2026-05-18 09:39:46 +09:00
깃 관리자 b86cecf4a1 fix(BT12-Dev): A11 정령불 hit 모션·flash 발화 (PD 지시 2026-05-14)
PD 보고: "정령불의 피격 범위에 있는 적은 EnableRepeatDamage가
체크되어있는데도 피해를 받지 않고 있어"

직접 진단 — Play 모드 [SpiritFire][Tick] Debug.Log 측정:
- 박스 center·size 정합 · OverlapBox enemyHit=1·dmg=5 6회 호출 확인
- A11 hit·damage 자체는 정상 동작

진짜 원인: DecrementBypassInvuln (DoT 함수·hit 모션·flash 발화 X)
호출. Enemy maxHP=99999 → 매 초 5 감소 = 시각상 변화 X·hit flash X
→ PD 인식상 "피해 X".

정정:
- DecrementBypassInvuln → DecrementBypassInvulnWithHit
- A05·Laser·Lightning·MeleeArea 동일 패턴 (hit 모션 + 붉은 flash 1f)
- A06 PoisonedEnemyMarker 영역 DoT 표현 의도라 DecrementBypassInvuln 유지

부속:
- 진단 Debug.Log 회수 (목적 달성)

검증 (Play 모드 직전 측정·진단 회수 전):
- center=(-13.81, -2.28) totalHit=3 enemyHit=1 dmg=5 (6회 연속 출력)
- A11 매 DotInterval 1초 hit 정합

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 23:58:51 +09:00
깃 관리자 5f7001a9a9 fix(BT12-Dev): A11 정령불 OffsetDistance 적용 (PD 지시 2026-05-14)
PD 보고: "정령불은 피격 범위의 offset distance가 적용되지 않고 있어"

원인: SpiritFireInstance.Update center = Player.position 그대로·
박스 시각 dbg.localPosition = zero. OffsetDistance 적용 누락.

정정 (A05·Laser 동일 패턴·signX + Vector2):
1. SpiritFireSpawner.Trigger 영역 facing sign + OffsetDistance Vector2
   offset 계산 → Init 인자로 전달 (Init signature 확장).
2. SpiritFireInstance._offset 신규 필드.
3. 박스 시각 localPosition = (_offset.x / lpx, _offset.y / lpy)
   (Player.lossyScale 보정).
4. 판정 center = Player.position + _offset (Update 매 frame).

검증 (Play 모드):
- test OffsetDistance (0, 1.5) 적용
- 박스 worldPos Δ from Player = (0, 1.50) ✓
- localPosition (0, 0.88) — Player.lossyScale.y=1.7 보정 정합

PD Inspector 실측: OffsetDistance=(0, 2)·HitboxSize=(3.4, 1.0)
정합 적용.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 23:28:13 +09:00
깃 관리자 e2b446e0f4 feat(BT12-Dev): A06·A11 판정 박스 시각화 + A11 OverlapBox 전환 + 페이드 (PD 지시 2026-05-14)
PD 발화 2건:
1. "독 늪 소환의 판정(중독 효과 발생 가능한 범위)와 정령불의
   판정 범위도 박스 형태로 보여줘 (정령불의 범위에 있는 적은
   정령불이 유지되는 동안 일정한 피해 간격마다 피해를 입어야 해)"
2. "정령불 이펙트는 소멸되기 0.5초 전부터 알파값을 증가시키고
   크기를 최대 현재 크기 기준으로 최대 50%까지 줄어들며 사라지도록
   해줘."

A06 독 늪 (PoisonSwampInstance):
- PoisonSwampHitbox_Debug 자식 GO 신규 — BoxCollider2D.size 일관
  SpriteRenderer (1, 0, 0, 0.35) · sortingOrder 100 · ShowDebugVisuals 토글

A11 정령불 (SpiritFireSpawner / Instance):
- OverlapCircle → OverlapBox (HitboxSize 사용·박스 시각 ↔ 판정 정합)
- AuraRadius 의존 제거 · _radius (float) → _boxSize (Vector2)
- SpiritFireHitbox_Debug Player 자식 GO — Player 이동 동조
- 피해 간격 = DotInterval (기본 1초·Inspector 조절)
- 소멸 0.5초 전 페이드 (PD 의도 "투명도 증가" = alpha 1→0):
  · FADE_DURATION=0.5 · alphaMul = 1-t · scaleMul = 1-0.5t
  · Renderer·MaterialPropertyBlock·_baseAlphas 캐싱 (Projectile 동일 패턴)
  · _TintColor 또는 _Color 자동 분기

PlayerSkillInventory.StaleSpawnNames:
- PoisonSwampHitbox_Debug·SpiritFireHitbox_Debug·MeleeHitbox_Debug2 추가
- 게임 재실행 시 cleanup catch 정합

검증 (Play 모드):
- A06 발사 → PoisonSwampHitbox_Debug visible=True (parent FX_Venom_Swamp)
- A11 발사 → SpiritFireHitbox_Debug visible=True (parent Player·scale 2.5,2.5)
- A11 HitboxSize=(2.5, 2.5)·DotInterval=1·MinionLifetime=8 정합

SOT (스킬_이펙트_확정_v1.md) §4 변경 이력 갱신.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 23:14:05 +09:00
깃 관리자 6ed6efe6a2 fix(BT12-Dev): fx ParticleSystem.scalingMode = Hierarchy 전수 적용 (PD 지시 2026-05-13)
원인: 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>
2026-05-13 23:58:39 +09:00
깃 관리자 ebd0808034 feat(BT12-Dev): A11 정령불 frame 기반 playback 제어 (PD 지시 2026-05-13)
FX_Rotating shield.anim 측정 정합 (m_SampleRate 60·m_StopTime 2.8166666·총 169 frame).

PD 명시 영역 제어:
- intro: 1~88 frame (0~1.4667s)
- loop: 89~105 frame 반복 (17 frame·0.2833s)
- outro: 남은 frame (106~169 → 1.7500~2.8167s·1.0667s) — duration 종료 전 자동 재생

SpiritFireInstance.Init:
- Animator 캐싱·updateMode = UnscaledTime
- speed=1 (normalizedTime 직접 제어)

SpiritFireInstance.Update:
- elapsed < introEnd → linear sample
- elapsed < outroStart → loop range modulo
- elapsed >= outroStart → outro linear (duration - outroLength 영역)
- Animator.Play(STATE_HASH, 0, normalizedTime) 매 frame 호출

STATE_HASH = Animator.StringToHash("Base Layer.FX_Rotating shield")

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 23:18:45 +09:00
깃 관리자 b1b476a061 fix(BT12-Dev Phase B): FX 재생 X — ParticleSystem 명시 Play + Collider 자식 분리 (PD 보고 2026-05-13)
원인 추정:
- 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>
2026-05-13 23:10:32 +09:00
깃 관리자 f292eb4fb3 feat(BT12-Dev Phase B): A06 독 늪·A11 정령불 신규 + 1키·2키 매핑 (PD 지시 2026-05-13)
신규 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>
2026-05-13 23:06:59 +09:00