
| 항목 | 내용 |
|---|---|
| 📅 작업 기간 | 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 : 플레이어 근접 무기