UE - 팀프로젝트-2
UnrealEngine, TeamProject2
오늘 목표는 캐릭터에게 총을 쥐여주는 것이었다.
필요한 것들
아이템의 정보
아이템의 정의를 정의하는 ItemDefinition
, 추가로 장착이 가능한 아이템에게 필요한 WeaponDefinition
을 정의했다.
아이템의 실체화
정보를 가지고 실제 아이템을 만들었다.
ItemInstance
와 EquipmentInstance
를 생성해줬다.
ItemInstance
는 아직 ItemDef
와 Fragment
를 저장하는 기능만 있다.
EquipmentInstance
는 장착이 가능하기에 슬롯의 이름과 트랜스폼을 가지고 캐릭터에 부착할 수 있는 기능을 추가해줬다.
물론 EquipmentInstance
를 상속해서 무기 기능을 추가한 WeaponInstance
와 총기에서 필요한 속성을 추가한 RangedWeaponInstance
만들어줬다.
아이템 관리와 생성
아이템의 관리와 생성은 3가지 컴포넌트가 관리한다.
InventoryItemManager
는 ItemDef
를 받아서 ItemInstance
를 생성한다.
QuickBar
는 ItemInstance
를 받아서 슬롯에 등록해준다.
EquipmentManager는
QuickBar`의 현재 활성화된 슬롯의 아이템을 정보를 받아 활성화해준다.
흐름
플레이어는 시작할 때 InitialItemDefinition
을 가지고 있다.
이 데이터들로 아이템을 생성해주고, 퀵바에 등록해준다.
퀵바에 등록된 아이템은 키보드 인풋으로 퀵바의 슬롯을 활성화한다.
활성화 할 때마다 전 아이템의 Unequip
, 활성화할 아이템의 Equip
을 활성화한다. (여기서 캐릭터에 액터를 붙여준다.)
Pistol 예시
ItemDef
, EquipmentDef
, RangedWeaponInstance
생성, 그리고 부착할 액터인 B_Pistol
을 생성해줬다.
플레이어에게 시작 시 생성할 아이템들의 Definition
을 넣어준다.
이 데이터로 IventoryItemManager
에서 아이템을 생성, QuickBar
에 등록한다.
이렇게 생성하고, 슬롯을 활성화한다.
Pistol ItemDef
추가적으로 들어갈 데이터가 더 있지만, 우선 액터에 장착하기위한 Fragment
를 추가해줬다.
Pistol EquipmentDef
여기선 소켓과 슬롯을 정해주고, 인스턴스 타입을 정해준다.
Pistol Instance
장착, 해제할 때 몽타주와 총알을 쏠 때 사용할 속성들을 가진다.