Unreal Engine 4 Weapon(2)
전 글에서 무기를 뽑고 넣는 동작까지 진행을 하였다, 이번에는 무기를 실제로 캐릭터에 붙혀서 동작에 따라 무기가 꺼내지고 넣어지고 공격하는 모션까지 진행을 하였다.
무기 Asset같은 경우에는 전글에서 말한거처럼 Unreal의 Market Place에서 얻거나, 또는 Quixel Bridge를 통하여 다운로드 할수있다. 그렇게 받은 무기를 Skeletal Mesh로 받아오는데 일반 Static mesh가 아닌 Skeletal로 받는 이유는
무기는 정적인 객체가아닌 Character의 Skeletal의 Soket에 끼워 Animation과 상호작용을하여 동적인 연출을 하여 제어할것이기 때문이다. 우선 Attack을 하기 위한 입력액션을 하나 만들어준다. 입력액션을 만드는 방법은 전글을 보면 알수있다.
아 전글에서 안적은 부분이 있는데 Notify기능이다.
각 Animation에는 Notify라는 해당 동작부분의 위치를 가리키는 것이 있다. 이것을 통하여 Animation이 얼만큼 진행이 되었는지 알아내어 동작을 넘기는 과정을 넘길수있다.
컨텐츠 패널에서 Blueprint생성으로 Notify를 검색하여 AnimNotify를 생성해준다.
그 다음 노티파이에 들어가 왼쪽 패널에 있는 이 부분을 더블클릭해주면 Blueprint 창이 생성되는데
반환 노드 Return Value의 값에 Equipped이름을 설정하면 해당 되는 이름을 Notify에서 설정하여 값을 받을수있다.
어느 부분의 위치를 반환할것인지는 Equipped를 움직여 설정할수있다.
다시 Notify로 이동하여 Recived로 가서 이런식으로 내 캐릭터로 보내줄수있다.
이런 식으로 똑같이 반대로 Notify를 만들어 넣는 동작도 동일하게 만들어준다.
이제 다시 칼을 설정하는 곳으로 넘어오자
내가 사용할 캐릭터의 스켈레톤에 들어가 왼쪽 패널을 보면 Bone에 대한 계층 구조가 나와 있다. 이부분에서 내가 검을 쥐게할 부분 손과, 검을 꺼낼 허리부분에 Soket을 생성하여 Preview로 다운한 무기를 넣어주어 스케일과 위치 각도를 조정하여 자연스럽게 만들어준다.
이런식으로 자연스럽게 만들어주었으면 실제로 동작으로도 자연스러운지 확인을 해준다. 확인하는 방법은
상단의 Preview Animation에서 내가 사용할 동작을 눌러 확인을하면 된다.
그렇게 확인을 완료 하였으면 내가 만든 Soket을 구분할 수 있도록 Soket이름을 만들어주고
다음 BP_Sword 콘텐츠 패널에서 Blueprint Actor로 생성하여 컴포넌트 추가로 Skeletal mesh -> sword 적용해주어 생성하고
만들어진 BP_Sword를 Spawn할것이기 때문에 , BP내캐릭터로 이동한다.
이동하여 CustomEvent로 칼을 쥐는 Event와 칼을 쥐고있지 않은 Event 두가지로 나누어주고,
칼을 캐릭터에 Spawn하기 위해 AttachActorToComponet 함수에 연결을 하여준다.
SoketName은 아까 Skeleton에서 설정한 해당되는 Soket이름을 적어주면 된다. 밑의 값들은 내가 아까 Skeletal에서 조정한 위치 각도 스케일을 사용할것이기에 Keep상태로 유지해주면 된다.
자 이제 이렇게 하고 플레이를 하면 캐릭터한테 칼이 입혀진것을 알수있다.
다음 동작을 할때 칼이 같이 동작과 같이 따라가도록 설정을 할것이다.
공격 모션은 Montage기능을 이용할 것인데 사용하기 전에 준비할것들이 있다. 우선 공격 Animation에 Montage를 생성해주고,
다음 ABP의 AnimGraph로 이동하여, Montage를 사용하기 위한 Defalut Slot을 만들어 연결해준다.
그 다음 아까 입력설정해준 액션을 BP내캐릭터에서 설정을해주고, 그냥 플레이하면 공격하는 중에 계속 공격이 나가기 때문에 위와 같이 설정을하여주고, 똑같이 Notify를 사용한다, 다만 이부분같은경우에는 Montage를 사용했기에 이번엔 Montage에서 Notify를 설정해준다. 그러기 위해 아까 만든 Notify를 그대로 복사하여 값만 바꿔주고, Montage에 설정해준다. 위와 같이 설정해주면 우선을 공격을 할경우 다시 클릭하였을떄 공격모션이 여러번 나오는것은 막아주었다. 하지만 아직 공격하면서 움직일수있게 되는데
이 부분은 다음 글에서 설정하여 상체는 공격하고 하체는 움직일수 있도록 만들어 움직이면서 자연스러운 공격이 되도록 할 예정이다.