해결해야 할 문제
1. 1인칭 시점에서는 팔과 총만 보여야 하는데 카메라 시점에 따라 내 캐릭터의 몸체가 보인다. 플레이어의 카메라에서만 캐릭터 메시(몸체)가 보이지 않도록 해야 한다. 또한 1인칭 시점의 메시는 다른 플레이어들에게 보이지 않아야 한다.
2. 현재 3인칭 캐릭터 메시에 적용되어 있는 이동 애니메이션은 팔을 내린 상태로 움직인다. 다른 플레이어가 보았을 때 캐릭터가 항상 총을 들고 있게 만들어야 하기 때문에 상체에는 다른 애니메이션을 적용해야 한다.
첫 번째 문제는 Mesh의 렌더링 설정에서 해결할 수 있다.


두 번째 문제
캐릭터 메시에 따로 총을 붙여야 한다.
총을 잡고 있는 애니메이션을 구해와서 상체에만 적용해야 한다.

마켓 플레이스에서 이 애셋을 프로젝트에 추가했다.
이 애니메이션 스타터 팩에서 제공하는 애니메이션은 SK_Mannequin(UE4)이라는 스켈레톤 메시를 대상으로 하기 때문에 현재 프로젝트에서 사용하는 SKM_Quinn(UE5) 스켈레톤 메시에 맞게 애니메이션 리타기팅이 필요하다.


레이어 애니메이션을 활용하여 상체에만 애니메이션을 적용한다.




이제 3인칭 메시에 총을 붙이고, 격발 애니메이션 몽타주를 적용할 차례이다.
이 과정을 진행하던 도중에 많은 것들이 바뀌었다. 기존에는 총 블루프린트 액터를 따로 만들고 액터 안에 Weapon 컴포넌트와 총 스켈레탈 메시 컴포넌트를 뒀었다. 이제는 총 액터를 따로 두지 않고 그냥 캐릭터 안에 Weapon 컴포넌트와 1인칭 3인칭 총 메시를 다 포함시켰다.
이전 포스팅에서는 캐릭터 블루프린트 이벤트 그래프에서 액터를 생성하고 이벤트를 연결했는데 다 없애고 코드로 옮겼다.
각 컴포넌트의 초기화는 캐릭터의 생성자에서 담당하고, 이벤트 등록은 BeginPlay에서 진행하였다.
3인칭 메시의 손 관절에 소켓을 추가하여 총 메시를 손 위치에 붙여 (AttachToComponent함수를 사용) 캐릭터에 대한 애니메이션이 발생할 때 자연스럽게 총도 같이 움직이게 되었다.


이벤트를 생성자에서 붙이면 해당 스크립트를 상속받는 블루프린트에서는 생성자가 호출되지 않는 문제를 몰라서 헤맸지만, BeginPlay로 옮겨 해결하였다.
이제는 1인칭 메시(팔)와 3인칭 메시(캐릭터)가 따로 존재하며, 각 메시에 다른 애니메이션이 적용되고, 좌클릭하여 fire 함수를 호출했을때 각각의 메시에 붙은 애님 몽타주가 재생된다.
'언리얼 5 > 게임 개발 일지' 카테고리의 다른 글
FPS 게임 개발 #6 (RepNotify와 RPC 함수를 사용하여 리플리케이션 적용하기) (0) | 2022.11.12 |
---|---|
FPS 게임 개발 #5 (유틸리티 매크로, 체력 시스템, 충돌 처리) (0) | 2022.11.08 |
FPS 게임 개발 #3 (애셋 이주, 적용) (0) | 2022.10.27 |
FPS 게임 개발 #2 (샘플 프로젝트 코드 리뷰) (0) | 2022.10.22 |
FPS 게임 개발 #1 (기획, 방향성) (0) | 2022.10.21 |