본문 바로가기
개발 로그/ProjectHive

캐릭터 계층 구조 생각 및 구현

by Fel.Forest 2025. 5. 11.

캐릭터를 어떻게 구현을 할까 고민을 많이했었습니다.

  1. 하나의 캐릭터에 PlayerController랑 AIController가 둘다 빙의가 가능하도록 하려면 어떻게 하면 좋을까 
  2. 모듈러 인거랑 아닌거를 어떻게 나누어야 하는지
  3. 생각했던게 캐릭터 베이스 -> 모듈러 캐릭터 -> 플레이 가능한 (실제로 레벨에 올라가는) 캐릭터를 하기로 했습니다

계층 구조

  • PHCharacterBase
    • PHPartsCharacter
      • PHPlayableCharacter : IPHAttackableInterface

세부 내용 및 생각

PHCharacterBase

  • 캐릭터의 기초가 되는 클래스 입니다.

PHPartsCharacter

  • 파츠 별로 스켈레톤 메시를 세팅합니다(머리, 몸통, 팔, 다리)
    • SetLeaderPoseComponent로 GetMesh()  하나 바꾸면 나머지 파츠도 자동으로 따라가게 만들었습니다
  • 캐릭터 생성 같은거 생각하면 경로 참조로 하는게 좋아보이긴합니다

PHPlayableCharacter

  • IPHAttackableInterface를 통해서 attack() 함수 구현을 강제할 생각입니다
  • 카메라 설정을 합니다
  • 입력 매핑을 합니다
    • Action은 static으로 만들어서 CDO에서만 로드하게 만들었습니다
    • SetupPlayerInputComponent은 PlayerController가 빙의할때 엔진단에서 함수를 호출하기 때문에 AIController에서 빙의해도 크게 문제가 있는 코드는 아닌거 같지만 솔직히 잘 모르겠습니다