해결해야 할 문제

1. 1인칭 시점에서는 팔과 총만 보여야 하는데 카메라 시점에 따라 내 캐릭터의 몸체가 보인다. 플레이어의 카메라에서만 캐릭터 메시(몸체)가 보이지 않도록 해야 한다. 또한 1인칭 시점의 메시는 다른 플레이어들에게 보이지 않아야 한다.

 

2. 현재 3인칭 캐릭터 메시에 적용되어 있는 이동 애니메이션은 팔을 내린 상태로 움직인다. 다른 플레이어가 보았을 때 캐릭터가 항상 총을 들고 있게 만들어야 하기 때문에 상체에는 다른 애니메이션을 적용해야 한다. 

 

첫 번째 문제는 Mesh의 렌더링 설정에서 해결할 수 있다.

1인칭 메시에는 Only Owner See 를 true로, 3인칭 캐릭터 메시에는 Owner No See를 true로 설정한다.
더 이상 게임 플레이 중 내 캐릭터의 몸체가 보이지 않는다.

 

두 번째 문제

캐릭터 메시에 따로 총을 붙여야 한다.

총을 잡고 있는 애니메이션을 구해와서 상체에만 적용해야 한다.

 

애니메이션 스타터 팩의 애니메이션을 활용한다.

마켓 플레이스에서 이 애셋을 프로젝트에 추가했다. 

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

 

애셋에 포함되어 있던 리타게터를 사용하여 애니메이션을 하나 더 만들어낼 수 있다.

 

새로 만든 애니메이션을 UE5의 스켈레톤 메시에 붙일 수 있다.

 

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

애니메이션에서 애님 몽타주를 생성한다.

 

새로 만든 몽타주를 DefaultGroup.UpperBody 슬롯에 연동시켰다.

 

기존 ABP_Manny 애니메이션 블루프린트 애님 그래프에 다음과 같이 노드를 추가했다.

 

 

이제 3인칭 메시에 총을 붙이고, 격발 애니메이션 몽타주를 적용할 차례이다.

이 과정을 진행하던 도중에 많은 것들이 바뀌었다. 기존에는 총 블루프린트 액터를 따로 만들고 액터 안에 Weapon 컴포넌트와 총 스켈레탈 메시 컴포넌트를 뒀었다. 이제는 총 액터를 따로 두지 않고 그냥 캐릭터 안에 Weapon 컴포넌트와 1인칭 3인칭 총 메시를 다 포함시켰다.

이전 포스팅에서는 캐릭터 블루프린트 이벤트 그래프에서 액터를 생성하고 이벤트를 연결했는데 다 없애고 코드로 옮겼다.

각 컴포넌트의 초기화는 캐릭터의 생성자에서 담당하고, 이벤트 등록은 BeginPlay에서 진행하였다.

3인칭 메시의 손 관절에 소켓을 추가하여 총 메시를 손 위치에 붙여 (AttachToComponent함수를 사용) 캐릭터에 대한 애니메이션이 발생할 때 자연스럽게 총도 같이 움직이게 되었다.

 

 

캐릭터 아래 수정된 컴포넌트 계층

 

이벤트를 생성자에서 붙이면 해당 스크립트를 상속받는 블루프린트에서는 생성자가 호출되지 않는 문제를 몰라서 헤맸지만, BeginPlay로 옮겨 해결하였다.

 

이제는 1인칭 메시(팔)와 3인칭 메시(캐릭터)가 따로 존재하며, 각 메시에 다른 애니메이션이 적용되고, 좌클릭하여 fire 함수를 호출했을때 각각의 메시에 붙은 애님 몽타주가 재생된다.

+ Recent posts