항목 | 내용 |
---|---|
📅 작업 기간 | 2024.10.04 ~ 2024.11.11 (1개월) |
🎮 장르 | 3인칭 액션 RPG |
🎯 모작 게임 | Loads Of The Fallen |
💻 개발 언어 | 블루프린트 |
👥 팀 구성 | 개인 프로젝트(1명) |
🧩 담당 파트 | 플레이어 , 적 AI |
🛠️ 개발 엔진 | 언리얼 엔진 |
구현 목표 |
---|
플레이어 이동 입력 시스템 설계 |
플레이어 이동 애니메이션 구현 |
플레이어 전투 시스템 구축 |
플레이어 UI 연동 및 상태 출력 |
구현 목표 |
---|
캐릭터 무기 종류별 기능 설계 |
캐릭터와 무기간 상호작용 모듈화를 위한 인터페이스 구현 |
캐릭터 콤보 시스템 구현 |
구현 목표 |
---|
보스 이동 및 상태 관리 |
보스 AIBehavior Tree와 Blackboard를 기반 전투 행동 구성 |
보스 공격 시스템 구현 |
BPI_Weapon
인터페이스 : 캐릭터 ↔ 무기 연동무기 클래스(BP_Weapon)와 캐릭터 클래스 간의 전투 관련 상태 및 기능을 일관되게 전달하기 위해 설계된 인터페이스입니다. 공격, 피격, 무기 교체 등 캐릭터의 상황에 따라 무기의 상태를 동기화하고, 무기 중심의 상태 제어 로직을 가능하게 하기 위해 제작하였습니다.
BPI_Weapon
제작 단계함수명 | 기능 요약 |
---|---|
GetWeapon_State() |
현재 무기의 상태(IDLE, ATTACK 등)를 반환 |
SetWeapon_State() |
무기의 상태를 변경할 때 호출 |
GetWeapon_Combat() |
무기의 전투 타입(Sword, Ranged 등)을 반환 |
SetWeapon_Combat() |
전투 타입을 설정할 때 호출 |
Weapon_Hitted() |
무기가 피격 반응을 해야 할 때 호출 |
Weapon_Dead() |
적 또는 캐릭터가 사망 시 무기 정리 로직 호출 |
GetWeapon_CanMove() |
무기 보유 시 이동 가능 여부 확인 (ex. 공격 도중 이동 가능 여부) |
SetWeapon_CanMove() |
이동 가능 여부 설정 시 호출 |
GetWeapon_Current() |
현재 무기 인덱스나 장착된 무기를 반환 |
BP_Weapon
: 전투 베이스 무기 클래스BP_Weapon은 플레이어와 적 캐릭터가 공통으로 사용하는 전투용 무기 클래스로, 공격 처리, 콤보, 충돌 판정, 데미지 전달 등의 전투 핵심 로직을 공통화하여 관리합니다. 이를 통해 코드 중복을 최소화하고, 무기별 커스터마이징은 자식 클래스에서 간편하게 구현할 수 있도록 설계하였습니다.
부모 클래스(BP_Weapon) 에 SetOnCollision
/ SetOffCollision
커스텀 이벤트를 정의하여,
일관된 방식으로 충돌을 처리합니다.
SetOnCollision
→ 충돌체 활성화
SetOffCollision
→ 충돌체 비활성화
AnimNotifyState
를 통해 충돌이 필요한 타이밍에만 해당 이벤트 호출
노티파이 발생 시
MeshComp
로부터 오너를 가져온 뒤, 해당 오브젝트가 BPI_Weapon
인터페이스를 구현하는지 확인 후, 인터페이스를 통해 무기 정보를 가져와 (GetWeaponCurrent
) 실제 무기 객체를 캐스팅하여,
부모 클래스에서 정의된 SetOnCollision()
또는 SetOffCollision()
호출합니다.
Set Collision Enabled
(Query and Physics) 혹은 No Collision
처리를 수행합니다.SendDamage()
: 무기 타격 시 피해 전달 함수GetWeapon_Current()
를 통해 현재 무기 오브젝트 접근 후 해당 무기의 공격력(Power
)을 불러와서 적용합니다.Apply Damage
노드를 통해 다음 정보 전달:
Damaged Actor
: 타격 대상Base Damage
: 무기에서 가져온 Power
수치Event Instigator
: 무기를 소유한 캐릭터의 컨트롤러Damage Causer
: 무기 자신 (self
)| --- | --- |
BP_Sword
: 플레이어 근접 무기