Unreal Engine, SimplePawnData 교체하기 - 카메라

💡
언리얼 에디터를 Lyra 소스코드 기반으로 사용하고 있다.

이전 글 "Unreal Engine SimplePawnData 교체하기 - 메쉬" 글에서 캐릭터를 만들었다. 그러나 게임 구동 시 시작 화면이 바닥을 향해 있다는 것을 볼 수 있는데, 카메라를 정상적으로 바라볼 수 있도록 고쳐준다

  • Alt+P 단축키로 시작해보도록 한다.
  • 구동 중인 상태에서 카메라가 이상한 곳으로 향해 있다.
  • Shift + Escape 중지 또는 F8 단축키를 누르고 뷰포트에서 Alt + 마우스좌클릭 화면을 이동한다.
  • 뷰포트로 바라본 모습. 캐릭터 카메라가 바닥부터 바라보는 이유를 찾도록 한다.

Hero_WarriorGame 에셋 요약

  • WarriorCore Content > Characters > Hero_WarriorGame 에셋 더블클릭
  • Pawn Class: 이 게임의 주인공. 블루프린트 클래스 B_Hero_Warrior 가 할당되어 있고 메쉬 작업도 완료되어 캐릭터가 서 있는 모습을 볼 수 있다.
  • Camera: 앞서 보았던 카메라가 바닥을 바라보고 있는데 이 카메라를 설정해서 땅에서 꺼내주도록 한다.

Characters > Cameras 폴더 생성

  • WarriorCore Content > Characters 아래에 Cameras 폴더를 생성하였다.

카메라 모드 클래스 추가하기

다른 게임 엔진에서는 국기봉 하나를 만들어 꼭대기에 화면을 붙어서 표시하는 형태로 만드는데, 언리얼 엔진에서는 카메라 모드를 가져와 사용할 수 있다.

  • [+Add] 버튼을 눌려 카메라 모드를 가져오도록 한다.
  • ALL CLASSES 펼친 후 LyraCameraMode_ThirdPerson 를 검색한다.
    • 해당 Lyra 블루프린트를 상속 받아 사용할 것이다.
  • Select 버튼을 누르도록 한다.
  • 추가한 Blueprint Class 이름을 CM_Warrior 으로 지정하였다.

ThirdPerson OffsetCurve 가져오기

Lyra 공용 Cameras 폴더에서 ThirdPerson OffsetCurve 가 있다.

  • Lyra 공용 폴더는 Content Drawer 탐색기에서 All > Content > Characters > Cameras 폴더가 있다.
  • ThirdPersonOffsetCurve 커브 에셋 파일이 있는지 확인
  • 어떤 에셋파일인지 더블클릭하도록 한다.
  • X, Y, Z 종속 변수로 카메라의 거리와 각도 효과로 사용하는 것으로 보인다.
  • 원하는 파일이 맞으므로 닫아주고 복사하도록 한다.
  • 복사한 ThirdPersonOffsetCurve 파일을 WarriorCore Content > Characters > Cameras 로 붙여넣도록 한다.
  • 이름을 "VC_Warrior" 으로 변경하였다.

Camera 블루프린트에 Vector Curve 설정하기

  • Characters > Cameras 폴더 추가한 CM_Warrior 블루프린트를 더블 클릭 하도록 한다.
  • 우측 Target Offset Vurve 설정이 필요하다.
  • Lyra 공용폴더에서 복사한 VC_Warrior 를 등록하도록 한다.

Hero_WarriorGame 에셋 카메라 추가하기

이제 추가한 CM_Warrior 카메라를 Hero_WarriorGame 주인공 데이터로 넣어주도록 한다.

  • WarriorCore Content > Characters > Hero_WarriorGame 에셋 더블클릭
  • 열린 에디터에서 Default Camera Mode 항목을 추가한 카메라 CM_Warrior 로 설정
  • 이제 카메라가 정상적으로 동작 해야했으나 실행하면 카메라가 땅에 묻어있다.

카메라 디버깅

이제 언리얼 엔진 카메라가 동작 안하는 이유를 찾아야 한다.

  • 앞의 그림에서 Hero_WarriorGame 열어보기
  • 변경할 Pawn Class 를 Lyra 공용 폴더에 B_Hero_Default 로 변경하기
  • Alt+P 다시 실행
  • 정상적으로 카메라가 바라보고 있다.
  • 그럼 B_Hero_Default 에디터를 열고 어느 부분을 수정해야하는지 찾아보도록 한다.
  • 옵션 하나하나 Warrior 로 옮겨보고 적용시키는 작업으로 찾는다.

카메라 디버깅 - 픽스하기

  • 하나씩 적용하다보면 LyraHero 컴포넌트 인 것을 알 수 있게되었다.
  • 해당 LyraHero를 우리가 만든 B_Hero_Warrior 로 가져오도록 한다.
  • B_Hero_Warrior 에디터로 열고 Components 에서 [+Add] 선택한다.
  • LyraHero 를 검색하여 추가하고 컴파일 하도록 한다.
  • 정상적으로 삼인칭 카메라로 바라보는 모습을 볼 수 있다.
  • Lyra 가 해당 컴포넌트를 넣은 이유로는 언리얼 엔진 위에 Lyra 프레임워크가 있고, 이 둘 사이에 생명주기 충돌 이슈가 있었던 것으로 보인다. 이로인해 LyraHero 다시 초기화해주는 역할로 필요했던 것으로 보인다.

작업한 폴더 Tree 상태

└─WarriorCore
    └─Content
       │  WarriorCore
       │
       ├─Characters
       │   │  B_Hero_Warrior (*)
       │   └─Cameras (+)
       │          CM_Warrior (+)
       │          VC_Warrior (+)
       │
       ├─Data
       │      Hero_WarriorGame (*)
       │
       ├─Experiences
       │      B_Experience_DebugGame
       │
       └─Maps
               DevMap

(+): Add File, (*): Changed File