데이터 기반(Data-Driven) 설계와 상속 기반(Inheritance-Based) 설계를 혼합하여, 각 객체의 역할을 명확히 하고 유기적인 상호작용을 구현하였음

무기 시스템의 전체적인 흐름(Flow Chart)

Untitled diagram _ Mermaid Chart-2025-08-18-105757.png


각 클래스별 담당 역할

클래스 역할 (책임) 상세 설명
WeaponData.h 데이터 명세서 무기의 모든 스펙(대미지, 연사속도, 반동, 스폰할 프로젝타일 클래스, 애니메이션, 이펙트 등)을 담고 있는 순수 데이터 구조체.
IWeaponInterface.h 행동 계약서 PrimaryFire, StopFire, Reload 등 무기가 수행해야 할 '행동'을 정의. 제어부와 구현부를 완벽하게 분리.
WeaponBase.h 무기 원형 모든 무기가 공유하는 핵심 로직(데이터 로드, 발사 조건 판단, 반동, 이펙트 재생, 히트스캔/프로젝타일 발사)을 구현한 부모 클래스.
**Weapon_Pistol.h
Weapon_Pulse.h** 단발 무기 AWeaponBase를 상속받아, 클릭 시 FireAction을 호출하는 단발 발사 로직을 구현.
**Weapon_SMG.h
Weapon_Rifle.h** 자동 연사 무기 AWeaponBase를 상속받아, 타이머를 이용해 FireAction을 반복 호출하는 자동 연사 로직을 구현.
BaseProjectile.h 투사체 원형 모든 투사체의 공통 기능(움직임, 충돌, 수명, 기본 OnHit 로직)을 담당하는 추상 부모 클래스.
RifleProjectile.h 라이플 총알 ABaseProjectile을 상속받아, 빠른 속도와 포인트 대미지를 주는 OnHit 로직을 구현.
PulseProjectile.h 펄스 에너지탄 ABaseProjectile을 상속받아, 충돌 시 ApplyRadialDamage를 호출하여 범위 피해를 주는 OnHit 로직을 구현.
InventoryComponent.h 장비 관리자 최대 2개의 무기를 '소지'하고, Destroy와 Spawn을 통해 무기를 교체하는 '가상 인벤토리' 시스템을 관리.
Pickup_Weapon.h 상호작용 아이템 월드에 배치되어 플레이어와의 상호작용(E키)을 통해 InventoryComponent에 무기를 추가/교체하는 역할을 수행.

핵심 기능 및 설계 패턴


트러블 슈팅