docs(BT12-Dev 이펙트 개선 세션 종결): 인수인계서 + 대화로그 + PD 지시 로그 (C40 정합)

PD 지시 (2026-05-13): "이제 이펙트 개선작업은 완료처리하고
다음 세션에서 작업할 수 있도록 빠짐 없이 세션 공유해"

본 세션 (cranky-wescoff-e855b0 worktree) 누적 EerieVillage commit 4건
push 정합 (origin/main f6c6eb5):
- 2ebf313  5 스킬 통합·1~5 키 발사 시스템
- 60e28e3  Scene 잔존 박스·FX cleanup + HideFlags.DontSave (재발 방어)
- ea7d32f  FxRotation 박스 미적용 분리 (박스 = facing · 이펙트 = facing + FxRotation)
- f6c6eb5  A05 좌우 베기 이펙트 Player 동조 (SetParent)

본 commit 등재:
- 공유/대화로그/EerieVillage/2026-05-13.md  엔트리 1~4
- 공유/조직공지/2026-05-13_BT12-Dev_세션종결인수인계.md
- 공유/PD_지시_트래킹/개발팀_PD_지시_로그.md  BT12-Dev-Vis 이펙트 개선 완료 처리

박스↔이펙트 분리 원칙 (본 세션 표준화):
- 박스(판정) = facing 좌/우 sign 만 · FxRotation 미적용
- 이펙트(시각) = facing + FxRotation 그대로
- runtime spawn = HideFlags.DontSave (Scene 오염 방지)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-05-13 17:44:12 +09:00
parent bedb09e7cc
commit cb4cca5a13
3 changed files with 282 additions and 1 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,144 @@
# EerieVillage 2026-05-13 대화로그
> 세션 worktree: `cranky-wescoff-e855b0`
> 영역: BT12-Dev-Vis 이펙트 개선 (5 스킬 박스·이펙트 정합)
> C32 정합
---
## 엔트리 1 — 5 스킬 통합 + 1~5 키 발사 시스템 (2026-05-12~13 야간)
세션 초반 작업 (컴팩션 이전) — PD 직접 발화 다수에 따라 다음 5 스킬·테스트 키 매핑·시각화 박스·DamageFrameDelay/EnableRepeatDamage/MaxHitCount/RepeatFrameInterval ScriptableObject 필드 신설·hit 모션 + 다단 히트 flash 연출.
| 키 | Skill | Effector | 주요 동작 |
|----|-------|----------|----------|
| 1 | A02 화염부 | ProjectileSpawner (Line) | 직선 파이어볼·HitFx |
| 2 | A04 뇌격부 | LightningStrikeSpawner | 화면 내 임의 적 1기 강타 + 주변 범위 |
| 3 | A05 학익진 | MeleeAreaSpawner | Player 주변 즉시 범위 피해 + FX_SLASH |
| 4 | A_Laser | LaserSpawner | facing 방향 레이저 직선 + DoT |
| 5 | A13 천둥발 | ProjectileSpawner (Arc·PiercingProjectile) | 관통·매 0.2s 영역 hit |
EerieVillage `2ebf313` — 5 스킬 통합·1~5 키 발사 시스템 (PD 지시 2026-05-13)
---
## 엔트리 2 — Scene 잔존 박스·FX 인스턴스 6개 cleanup + HideFlags.DontSave (2026-05-13 EerieVillage `60e28e3`)
**PD 보고**: "왜 레이저의 히트박스가 여러개로 보이는거지? 체크해보고 불필요한 박스 영역 제거해"
본 PM 직전 측정 결과 — `LaserHitbox_Debug × 1` + `ProjectileHitbox_Debug × 3` (parent=FX_Lightningball(Clone)). LaserHitbox 자체는 1개로 정상 동작하나 다른 잔존 박스가 시각상 중첩.
**원인 확정 — Scene 파일 직접 grep**:
`Assets/Scenes/Ingame.unity` 파일 안에 이전 Edit Mode execute_code 측정 시점 spawn 후 Scene 저장된 인스턴스 6개 영구 잔존.
- `FX_Lightningball(Clone) × 3` (각각 `ProjectileHitbox_Debug × 1` 자식)
- `FX_SLASH(Clone) × 2`
- `FX_Dragonfire(Clone) × 1`
**정정 2건**:
1. Edit Mode `DestroyImmediate` + `EditorSceneManager.SaveScene` 으로 잔존 6개 일괄 cleanup. 사후 grep 0건 확인.
2. 런타임 spawn 8 지점에 `HideFlags.DontSave` 부여 — Scene 저장 시 무시 + Play→Stop 자동 cleanup. 적용 파일:
- `HitboxDebug.Spawn`·`AttachToTransform`
- `Projectile.SpawnHitboxDebugChild`·OnTrigger FX Instantiate
- `LaserSpawner` (박스·FX)
- `MeleeAreaSpawner` (박스·FX)
- `LightningStrikeSpawner` (FX)
- `ProjectileSpawner` (Projectile 본체)
- `EnemyStateComponents` (DoT FX)
**검증 (Play 모드 직접 측정)**:
- A_Laser 1회 발사 → Player 자식 2개 (`FX_Dragonfire(Clone)` + `LaserHitbox_Debug`)
- A13 1회 발사 → `FX_Lightningball(Clone) × 1`, 자식 `ProjectileHitbox_Debug × 1`
- Stop 후 Scene 잔존: 0건
- ExtraProjectiles=0 정상 — 다중 발사 의혹 무관
---
## 엔트리 3 — FxRotation 박스 미적용 분리 (2026-05-13 EerieVillage `ea7d32f`)
**PD 진단** (본 PM 가설 영역 우선 채택):
"문제의 원인을 알겠어. 캐릭터가 방향을 전환하면 박스 영역이 좌,우로 반전되어야하는데 이펙트를 회전한 경우 히트 박스도 함께 회전되어서 생긴 문제야. 이펙트 회전은 비주얼적인 부분을 변경하기 위한 목적이기 때문에 히트 박스 영역은 회전되어선 안돼. (회전한 경우 x축을 반전하기 떄문에 비주얼적으로는 y축 박스가 추가되는 형태로 보임)"
**정정 방침**:
- 박스(판정) = facing 좌/우 반전만 반영 · FxRotation 미적용
- 이펙트(시각) = facing + FxRotation 그대로 (현행 유지)
**파일별 정정** (4 파일):
`LaserSpawner.Trigger`
- 박스 rotation = baseAngle (facing 만), FxRotation 제외
- 박스 forwardDir = facing.normalized (FxRotation 회전 제외)
- OffsetDistance.x 에 facing sign 반영 (좌/우 위치 반전)
`LaserSpawner.ApplyLaserDamage`
- 판정 forwardDir = facing 만
- OffsetDistance.x 에 facing sign 반영
`MeleeAreaSpawner.Trigger`·`DoOverlapBoxFromPlayer`
- 박스 localRotation = identity (FxRotation 제거)
- OffsetDistance.x 에 facing sign 반영
- OverlapBox rotation 0
`LightningStrikeSpawner.Trigger`
- 박스 rotation 0 · capturedRot 변수 제거
- HitboxDebug.Spawn 후 rotation 부여 라인 제거
- FixedHitDamageCoroutine 호출 rotZ=0
`Projectile.Initialize`
- transform.rotation = facing 만 (FxRotation 제외)
- root 가 BoxCollider2D + 시각 동시 보유 → 박스 회전 금지 의도
**검증 (Play 모드 8 case)**:
| Skill | facing | FxRotation | 박스 worldPos | 박스 rot |
|---|---|---|---|---|
| Laser | 우 | 0 → 90 | (-1.50, -2.78) 불변 | 0 (불변) |
| Laser | 좌 | 0 → 90 | (-12.50, -2.78) 불변 | 180 (불변) |
| Melee | 우/좌 | 0 → 45 | (-7, -1.18) 불변 | 0 (불변) |
| Proj A13 | 우 → 좌 | 0 | (-6.50) → (-7.50) | 0 → 180 |
FxRotation 변경에 박스 무반응 + facing 변경 시 좌/우 정확히 반전.
---
## 엔트리 4 — A05 좌우 베기 이펙트 Player 동조 (2026-05-13 EerieVillage `f6c6eb5`)
**PD 보고**: "좌우 베기의 경우, 플레이어가 전진중일 때 뒤늦게 위치가 바뀌기 때문에 이펙트가 제자리에서 발생될 때보다 밀리는 현상이 있어. 플레이어 이동에 맞게 위치 및 판정 위치도 함께 조정되도록 수정해줘."
**원인**: `MeleeAreaSpawner` 의 FX 가 spawn 후 SetParent 미적용 → world 좌표 freeze → Player 전진 시 시각상 뒤로 밀림. 박스는 이미 Player 자식이라 정상 동조 중.
**정정**:
- `fxGo.transform.SetParent(inventory.transform, true)` 추가
- `worldPositionStays=true` 로 spawn 직후의 world 위치·rotation·scale 유지 + 이후 Player 이동에 자동 동조
- facing flip·HitFxScale·FxRotation 모두 SetParent 이전에 처리되어 영향 없음
**검증 (Play 모드)**:
Player x: -7 → -5 (Δ+2.0) 이동
- FX_SLASH worldPos: -6.80 → -4.80 (Δ+2.0) ✓
- MeleeHitbox_Debug worldPos: -7.00 → -5.00 (Δ+2.0) ✓
---
## 본 세션 EerieVillage commit (4건 — origin/main push 정합)
| commit | 내용 |
|--------|------|
| `2ebf313` | 5 스킬 통합·1~5 키 발사 시스템 (세션 초반, 컴팩션 이전 누적) |
| `60e28e3` | 스킬 박스·FX Scene 잔존 정정 (Scene cached 6 cleanup + HideFlags.DontSave 8 지점) |
| `ea7d32f` | FxRotation 박스 미적용 분리 (4 파일) |
| `f6c6eb5` | A05 좌우 베기 이펙트 Player 동조 (SetParent) |
→ origin/main `f6c6eb5` push 정합
---
## 본 PM 자성
본 세션 직접 자성 신규 없음. 다만 직전 측정 (Resources.FindObjectsOfTypeAll 사용) 시 `scene.IsValid` 필터로 hideFlags 적용 GO 카운트 누락한 query 결함은 측정 정확도 차원에서 기록. 차후 spawn 카운트 측정 시 `transform.childCount` 또는 `Scene.GetRootGameObjects()` 재귀 자식 순회를 표준으로 사용.
---
## 영역 자산
- `HitboxDebug.cs` 공용 helper (Spawn·AttachToTransform·GetWhiteSprite) — 추후 다른 카테고리 (C 설치·D 소환·E 오라) 영역 박스 시각화 재사용 가능.
- 박스↔이펙트 분리 원칙 (박스 = facing 만 · 이펙트 = facing + FxRotation) — 향후 다른 Effector 추가 시 동일 패턴 적용 표준.
- `HideFlags.DontSave` 패턴 — Edit Mode 측정 시 Scene 오염 방지 표준.

View File

@ -0,0 +1,137 @@
# 2026-05-13 BT12-Dev 세션 종결 인수인계서
> 세션: `cranky-wescoff-e855b0` worktree (2026-05-12~13 — 컴팩션 1회 포함)
> 종결 사유: PD 직접 지시 ("이제 이펙트 개선작업은 완료처리하고 다음 세션에서 작업할 수 있도록 빠짐 없이 세션 공유해")
> C40 정합 — 세션 공유 5종 사전 점검·세션 종결 인수인계서·다음 세션 첫 프롬프트 템플릿
---
## 1. 본 세션 핵심 결과 (양 레포 push 정합)
### EerieVillage `E:/EerieVillage/`
| commit | 내용 |
|--------|------|
| `2ebf313` | 5 스킬 통합·1~5 키 발사 시스템 (5 스킬 + DamageFrameDelay·EnableRepeatDamage·MaxHitCount·RepeatFrameInterval 필드 + Animator self-loop transition + hit flash) |
| `60e28e3` | 스킬 박스·FX Scene 잔존 정정 — Scene cached 6 cleanup + `HideFlags.DontSave` 8 spawn 지점 |
| `ea7d32f` | FxRotation 박스 미적용 분리 — 박스(판정) = facing 만 / 이펙트(시각) = facing + FxRotation |
| `f6c6eb5` | A05 좌우 베기 이펙트 Player 동조 — `MeleeAreaSpawner``SetParent(inventory.transform, true)` 추가 |
→ origin/main `f6c6eb5` push 정합
### BurningTimes `E:/BurningTimes/`
대화로그 `공유/대화로그/EerieVillage/2026-05-13.md` (엔트리 1~4) · PD 지시 로그 갱신 · 본 인수인계서.
→ origin/main push 정합 (본 commit)
---
## 2. 본 세션 이펙트 개선 작업 영역 (PD 완료 처리 지시)
### 완료 항목
1. **5 스킬 통합 + 1~5 키 발사 시스템** — A02 화염부·A04 뇌격부·A05 학익진·A_Laser·A13 천둥발
2. **시각화 박스 ↔ 판정 정합** — 5 스킬 전부
3. **Inspector 즉시 반영** — HitboxSize·OffsetDistance·OffsetXY·FxRotation·HitFxScale·DamageFrameDelay·EnableRepeatDamage·MaxHitCount·RepeatFrameInterval
4. **hit 모션 + flash 연출** — 모든 피해 상황 붉은색·alpha 50%·1 frame
5. **OffsetDistance Vector2 전환** — X/Y 절대 좌표 (OffsetDistanceX 삭제)
6. **Scene 잔존 박스·FX 6개 cleanup** + `HideFlags.DontSave` 8 spawn 지점 (재발 방어)
7. **FxRotation 박스 미적용 분리** — 박스 = facing 만 · 이펙트 = facing + FxRotation
8. **A05 좌우 베기 이펙트 Player 동조** — Player 전진 시 이펙트 밀림 정정
### 검증 정합 (Play 모드 직접 측정)
- 8 case FxRotation 0/90·facing R/L 전수 검증
- Player 이동 Δ+2.0 시 FX·박스 동조 측정
- Stop 후 Scene 잔존 0건
---
## 3. 활성 PD 지시 현황
### 진행중
| 지시 | 상태 | 비고 |
|------|------|------|
| **BT12-Dev-Vis** | **이펙트 개선 완료 처리 (본 세션)** | HUD·Icon UI·Layer Lab 카드 정합 등 잔여 사항은 PD 후속 결정 대기 |
| **BT12-Dev** | 진행중 | Phase 2-A·B·C·D 완료. Phase 2-E (asset 60 전수)·다른 카테고리 (C 설치·D 소환·E 오라·F 강화) PD 결정 대기 |
| **BT12-MVP-A** | D안 완료 2026-05-09 | |
| BT7-Dev·BT5-Dev·BT7-Plan | 진행중 | |
### 미해결 (BT12-Dev 영역)
| 영역 | 상태 |
|------|------|
| 사거리 차이 체감 (`1ef1989` speed 6·lifetime 5) | PD Play 검증 대기 (직전 세션) |
| Hurt·Death animation (수동 idle 영역만) | 후속 |
| Wall OverlapPoint Layer 16만 (Layer 0 Level Tilemap 미커버) | 후속 |
| Phase 2-E (asset 60 전수 정식) | balance-designer 정식 수치 확정 후 |
| 다른 카테고리 Effector (C 설치·D 소환·E 오라·F 강화) | PD 결정 대기 |
---
## 4. 현재 작업 환경
### 양 레포 git
- EerieVillage `main` `f6c6eb5`
- BurningTimes `main` — 본 commit 후 push
### Unity 환경 (변경 누적)
- `ActiveSkillData` 필드 확장: `ProjectilePrefab`·`OnHitFxPrefab`·`OnDotFxPrefab`·`DotDamageMultiplier`·`ProjectileFxScale`·`HitFxScale`·`DotFxScale`·`FxRotation`·`OffsetXY`·`DamageFrameDelay`·`EnableRepeatDamage`·`MaxHitCount`·`RepeatFrameInterval`·`OffsetDistance (Vector2)`
- 5 Effector 활성 (`ProjectileSpawner`·`MeleeAreaSpawner`·`LaserSpawner`·`LightningStrikeSpawner` + `Projectile`·`PiercingProjectile`)
- 공용 helper `HitboxDebug` (Spawn·AttachToTransform·GetWhiteSprite)
- 모든 runtime spawn 에 `HideFlags.DontSave`
- 1~5 키 발사 테스트 `TestSkillFireOn1to5`
- Animator self-loop transition (Baddie-Hurt·Player-Hit)
- `Health.DecrementBypassInvuln` (DoT) · `DecrementBypassInvulnWithHit` (다단 히트)
### 박스↔이펙트 분리 원칙 (본 세션 표준화)
- **박스(판정)** = facing 좌/우 sign 만 반영 · FxRotation 미적용
- **이펙트(시각)** = facing + FxRotation 그대로
- **Scene 오염 방지** = 모든 runtime spawn `HideFlags.DontSave`
향후 다른 카테고리 Effector 추가 시 동일 패턴 표준.
---
## 5. 다음 세션 첫 프롬프트 템플릿
```
BT12-Dev 재개.
이전 세션 인수인계서 = 공유/조직공지/2026-05-13_BT12-Dev_세션종결인수인계.md
이전 세션 ID = cranky-wescoff-e855b0
이전 세션 마지막 commit:
EerieVillage f6c6eb5 (origin/main push 정합)
BurningTimes < commit> (origin/main push 정합)
이펙트 개선 작업 = 완료 처리됨.
다음 영역 결정 대기:
1. Phase 2-E (asset 60 전수 정식 수치) — balance-designer 정식 수치 확정 필요
2. 다른 카테고리 Effector (C 설치·D 소환·E 오라·F 강화)
3. Hurt·Death animation 정식 (수동 idle 영역만 상태)
4. Wall OverlapPoint Layer 0 커버 (Level Tilemap)
5. 사거리 차이 PD Play 검증 (speed 6·lifetime 5)
박스↔이펙트 분리 원칙 (표준):
- 박스(판정) = facing 좌/우 sign 만 · FxRotation 미적용
- 이펙트(시각) = facing + FxRotation
- runtime spawn = HideFlags.DontSave
```
---
## 6. C40 자기검증
| # | 항목 | 상태 |
|---|------|------|
| ① | 모든 결정·산출물·feedback 대화로그·PD 지시 로그 등재 | ✅ `공유/대화로그/EerieVillage/2026-05-13.md` 엔트리 1~4 |
| ② | 양 레포 commit·push 정합 | ✅ EerieVillage `f6c6eb5` push 정합 · BurningTimes 본 commit 후 push |
| ③ | 매니페스트 archive 자동 이동 | ✅ `2026-05-13_174251` 등록 후 본 commit 영역 자동 archive |
| ④ | 다음 세션 인수인계서 | ✅ 본 문서 |
| ⑤ | 다음 세션 첫 프롬프트 템플릿 | ✅ §5 |