포트폴리오/졸업작품

[졸작] 기능구현리포트_4회차

Honey Badger 2022. 12. 11. 00:00

  기존에 작성한 코드들은 책의 내용을 따라한 코드가 많다. 그렇다 보니 구조적으로 마음에 들지 않는 부분도 있고, 책이 만들고자 하는게임과 내 게임은 방향성이 다르기 때문에 더 늦기 전에 기존의 코드 구조를 대규모 수정하기로 했다. 

 

1. 입력 로직 PlayerController로 옮기기.

  기존에 Character코드에서 입력설정과 그에 맞는 함수들을 바인딩해주었는데, 이는 만약 플레이어가 Character가 아닌 다른 Pawn에 빙의하고자 했을 때 해당 Pawn에도 일일히 바인딩 해주어야 하기 때문에 확장성이 떨어진다고 생각하여, MyPlayerController로 Player의 입력처리 로직을 모두 옮겼다. 

 

2. Charater클래스를 상속받아 Player와 Enemy클래스로 나누기.

  기존의 Character는 Player와 Enemy 모두를 통합한 클래스였다. 이로 인해 Character 코드에서 Enemy와 Player의 기능을 구분지어 구현하고 싶을 땐 IsPlayer()와 같은 함수로 그때그때 나누어 주어야 했다(코드가 구조적으로 좋아보이지 않았음). 또한 콜리전채널이 동일하여 아이템 박스를 적이 먹고 무기를 획득하는 경우가 생기거나, 캐릭터 ui는 왼쪽 상단에, 적HP는 적 머리위에 표시하는 것이 일반적인 게임인데 캐릭터 머리위에도 HP Bar가 생기는 등 다양한 마음에 들지 않는 오류? 가 생겨났다. 또한 Enemy에는 굳이 필요없는 SpringArm, Camera와 같은 컴포넌트가 붙었다.

  책에선 왜 Player과 Enemy코드를 굳이 나누지 않았는지 모르겠다. 이를 수정하기 위해 Character를 상속받은 Player와 Monster 클래스를 생성하고 각각에 필요한 함수와 컴포넌트들을 모두 분리하였다.  

 

// 자세한 내용은 깃헙 참고.

 

<새로 추가된 부분>

- 새로운 콜리전 오브젝트 Monster 추가

- Monster Data CSV파일 임포트

- Monster AnimationBluprint, Montage 만듦.

- MyMonsterWidget

- MyMonsterStatComponent

- MyMonster

- Monster_AnimInstance

 

<수정된 부분>

- MyItemBox

- MyGameModeBase

- MyGameInstance

- MyCharacter

- BTTask_TurnToTarget

- BTTask_Attack

- BTService_Detect

- BTDecorator_IsInAttackRange

 

<삭제된 부분>

- MyCharacterWidget