Unity Project-2026/02/19-HITWAVES
2026/02/15 - 기능개발 일지
기능개발
장착형 아이템 시스템
[목표]
아이템 4분류 중 장착형 구현 — 슬롯 기반 장비 장착/해제/드롭
기존 ItemData SO를 흡수/장착 통합 SO(ItemMaker)로 리팩토링
Strength 스탯 기반 무게 제한 시스템
[구현 요약]
ItemData SO → ItemMaker SO로 리팩토링 (흡수형/장착형 필드 통합, CreateAssetMenu 지원)
EquipmentSlotType enum 생성 (Head/Body/Arms/Legs/Back/Accessory/Weapon 7부위)
EquipmentHandler 컴포넌트 — 동적 슬롯 관리(HashSet), 장착/해제/드롭, 무게 시스템
WorldItem에 Equipment 픽업 분기 추가 (switch 구조), Initialize() 메서드 추가 (런타임 드롭용)
무게 시스템: Strength × weightPerStrength = 최대 무게, 초과 시 장착 거부
같은 슬롯 장비 교체: 기존 장비 자동 Unequip → Drop → 신규 장비 Equip
뮤턴트 대응: AddSlot/RemoveSlot으로 런타임 슬롯 변경 지원
ItemMakerEditor 커스텀 인스펙터 — ItemType에 따라 조건부 필드 표시
[결과]
인스펙터에서 장착 부위, 무게, 스탯 변경을 설정 가능
장비 교체 시 기존 장비가 월드에 드롭되어 재픽업 가능
무게 초과 장비는 장착 거부, 아이템이 월드에 유지
디버그 UI 시스템
[목표]
개발 중 플레이어의 스탯, 장비, 패시브 정보를 실시간으로 확인할 수 있는 디버그 패널
이벤트 기반으로 자동 갱신되어 수동 새로고침 불필요
[구현 요약]
ItemHistory 컴포넌트 생성 — 흡수 아이템 이력 추적, OnItemAbsorbed 이벤트
DebugStatPanel 컴포넌트 생성 — ` (Backquote) 키로 토글, TextMeshProUGUI 사용
3개 섹션 표시: Stats(전체 스탯 + HP), Equipment(슬롯별 장비 + 무게), Passives(흡수 아이템 + 효과)
이벤트 기반 자동 갱신: OnStatChanged, OnHealthChanged, OnEquipped/OnUnequipped, OnItemAbsorbed 구독
StringBuilder(1024) 재사용으로 GC 최소화
[결과]
` 키 한 번으로 전체 캐릭터 상태 확인 가능
아이템 획득/장착 시 패널이 열려있으면 즉시 반영
패널 닫힌 상태에서는 이벤트 수신해도 Refresh 호출 안 함 (불필요한 연산 방지)
아이템 밀기 (Kick)
[목표]
아이작 스타일로 픽업 실패한 아이템을 발로 밀 수 있게 하기
장착 불가(무게 초과, 슬롯 없음) 장비를 물리적으로 밀어서 이동시키기
[구현 요약]
WorldItem에 Rigidbody2D RequireComponent 추가 (gravityScale=0, FreezeRotation, linearDamping=5)
픽업 실패 시 Collider2D.isTrigger = false → 물리엔진이 자연스럽게 밀어냄
OnCollisionExit2D에서 isTrigger = true 복원 → 재접근 시 픽업 재시도
TryPickup() 메서드 분리로 픽업 로직 공용화
[결과]
수동 AddForce 대신 Unity 물리엔진에 위임하여 자연스러운 밀기 느낌
플레이어 속도/질량이 그대로 반영되어 추가 튜닝 불필요
밀린 아이템을 다시 밟으면 trigger 복원 후 픽업 재시도
공중/지상 분류 체계 (Elevation)
[목표]
엔티티(플레이어, 적)와 아이템 모두 공중/지상 상태를 가질 수 있는 기반 구조
추후 점프/비행, 공격 필터링, 시각 효과(Y오프셋, 그림자)의 토대
[구현 요약]
ElevationState enum 생성 (Grounded, Airborne)
ElevationHandler 컴포넌트 — 상태 관리 + 물리 레이어 자동 전환
인스펙터에서 groundLayer, airborneLayer 설정 → SetElevation() 호출 시 자동 전환
OnElevationChanged 이벤트로 상태 변경 알림
RequireComponent 없는 범용 설계 — 엔티티, 아이템 등 어디든 부착 가능
[결과]
분류 체계 + 레이어 전환 인프라 완성
점프/비행 로직, 공격 상호작용 필터링, 시각 효과는 추후 확장 예정
Unity의 Physics2D Layer Collision Matrix와 연계하여 공중/지상 충돌 분리 가능




