Unreal 21/Game Make Study

UE4_06. 플레이어 공격

DDing_h 2021. 12. 23. 16:58

간단한 공격하기를 만들어 보도록 하자.

사전 준비 - Mixamo에서 애니메이션 다운로드
Mirror Mode 꼭 체크해서 귀찮은 일이 발생하지 말도록 하자

닌자의 공격 모션을 위해 Mixamo를 이용하여 해당 모션을 다운로드하였다.
Without Skin으로 Mirror를 꼭 체크하여 다운로드하도록 하자.
Mirror가 없으면 공격 모션과 Idle의 자세가 어정쩡해진다.
(앞으로도 애니메이션을 만들 때 발 위치나 자세의 위치를 잘 확인해보고 다운로드하여야 할 것 같다.)

 

 

그 뒤 임포트 해준다.(스켈레톤을 닌자로 설정해야 한다.)


애니메이션 몽타주로 공격 모션 만들기
임포트 후 몽타주 생성하고 몽타주 재생해보기

몽타주 만들기

임포트 완료된 애니메이션을 우클릭하여 애니메이션 몽타주 만들기를 진행하였다.

  • Animation Montage
    ->애니메이션을 이용한 작업을 도와주는 유연한 툴

이제 애니메이션 몽타주를 이용하여 공격 모션을 만들어 보자.


프로젝트 세팅 - 입력에 액션 매핑으로 다음과 같이 왼쪽 마우스 버튼 입력을 만들어 두었다.
이 액션 매핑을 통해 왼쪽 마우스 이벤트를 만들 것이다.

BP_Player에 추가하였다.

BP_Player에 해당 노드를 추가하였다.
마우스 왼쪽 버튼을 눌렀을 때 몽타주가 재생되는 방식이다.

  • AttackToMouse
    -> 제작자(본인)가 직접 만든 입력 매핑
    -> Pressed : 눌렀을 때
    -> Released : 뗐을 때 
  • Play Anim Montage
    -> 해당 캐릭터 메시의 몽타주를 재생시켜주는 노드
    -> Anim Montage : 재생할 몽타주의 이름
    -> In Play Rate : 재생 속도 (숫자가 클수록 빠르다)
    -> Start Section Name : 설정한 섹션의 이름부터 시작한다.

그 뒤 실행해 보자.

어라 공격이 안된다!
애니메이션 그래프 사이에 DefaultSlot을 추가 시켜줘야 한다.

이유는 Default Slot을 넣어주지 않아서 이다.
애니메이션 몽타주를 블루프린트로 사용하기 위해선 스테이트 머신과 애니메이션 포즈 사이에 Default Slot이 추가되어야 한다.

해당 문제를 해결하고 다시 공격을 실행해 보자.


움찔움찔

이번엔 공격이 된다. 하지만 공격 버튼을 계속해서 누를 경우 처음으로 돌아가 공격을 재시작하기에 반복해서 누르게 되면 몸이 움찔움찔거린다. 이번엔 이 문제를 해결해보려 한다.


노티파이를 추가하여 애니메이션 이벤트를 만들자
애니메이션 이벤트를 통해 bool형식 변수를 꺼주고 켜주기

만들어둔 애니메이션 몽타주로 들어가 원하는 곳에 새 노티파이를 만든다.
본인은 팔이 다 뻗는 곳에 추가하였다. 
노티파이 부분의 편집 가능한 부분에 마우스 오른쪽을 눌러 새 노티파이를 추가할 수 있다.
이름은 ThrowAttackEnd라고 정했다.


그 뒤 BP_Player의 몽타주 재생 부분을 다음과 같이 추가하였다.
IsAttack이라는 bool 형식의 변수를 추가하였고 공격 중이 아닐 때 몽타주를 재생하고 공격 중으로 Bool형식을 바꾸었고
그 뒤 공격이 완료됐을 경우 다시 공격 중이 아닌 상황으로 변환하기 위해 커스텀 이벤트를 만들어 IsAttack를 false로 만들었다.

  • Custom Event
    -> 이름을 사용자 마음대로 편집 가능하며 원하는 노드를 출력할 수 있게 해주는 이벤트

그 뒤 애니메이션 블루프린트에 몽타주로 만들어 둔 노티 파이를 이용하여 새로운 이벤트를 만들어 준다.
본인의 경우 팔을 다 뻗었을 때 공격 중이 아닌 상태가 되어 다시 공격 버튼을 사용할 수 있게 만들었다.
(팔을 뻗는 도중에는 재 공격이 불가능하다.)

그 뒤 실행하면 원하는 곳부터 재 공격이 가능하다.