Unreal Engine/게임클래스 - 언리얼엔진 기초

[21강] Animation Blending

whereareyoung 2023. 10. 12. 16:23

저번시간에 이어 Attacking 애니메이션 오류를 해결할예정이다. 

   1. 무기가 있을때 / 없을때 상관없이 진행 

    2. 여러번 휘두르는 문제 

    3. 휘두르고 난 후 Idle (Unarmed) 로 초기화 되어 플레이 됨

 

이번시간에는 3번 문제를 애니메이션 블랜딩 기능을 이용하여 해결할 예정이다. 

 

< 애니메이션 블랜딩 >

   - 애니메이션 두 동작 이상을 섞는 기능 

   - 애니메이션 몽타주의 슬롯 애니메이션이 실행된 후 idle 등이 초기화 되는 문제를 해결 가능 

   - "본마다 레이어로 블랜딩" 기능 사용 

ex. 상하체 애니메이션을 섞음. 하체의 기본동작을 유지시키는 방법으로 공격 애니메이션을 더욱 자연스럽게 구현 

 

Attacking Animation 오류해결 (3)

1. Upper Body 슬롯 만들기

저번시간에는 default slot을 사용했지만, 기본적으로 제공되는 슬롯은 실무에서는 사용되지 않는다. 

--1) Mesh > Skeleton 

--2) 창 > 애님 슬롯 매니저 > 슬롯 추가 > "DefaultGroup.Upper Body" 생성

* 슬롯 그룹 : 나눠주는 역할만 수행

 

2. 애니메이션 몽타주 그룹 변경 

 

3. "ABP_Player" 애님그래프 편집

--1) Default Slot 삭제, "캐시 포즈 새로 저장" 연결, rename "Jumping Pose"

* 캐시 포즈 새로 저장 : 플레이 된 결과를 변수처럼 저장하는 노드

 

--2) "Jumping Pose 캐시 포즈를 사용합니다" 생성

--3) "Default Slot" 생성 및 세팅 

--4) "본마다 레이어로 블렌딩 합니다." 생성 및 다음과 같이 연결 

- Base Pose : 기본 애니메이션

- Blend Pose : 섞일 애니메이션 

 

* 두번째 "Jumping Pose 캐시 포즈를 사용합니다" 는 필수 

상체 / 하체 가 따로 플레이 되는 상황이며 상체의 경우만 Upper Body 가 플레이 되는 상황에서 

두번째 Jumping Pose 가 없다면 A 포즈가 나와버림 (기본포즈)- 플레이가 되는 상황에서 섞여야함 - A 포즈가 나와버림 (기본포즈)

 

--4) "본마다 레이어로 블렌딩 합니다." 설정

- Bone Name : 섞을 본의 이름 

- Blend Depth : 얼마만큼 섞을지의 비율 값  (1:완전히 섞음, 0:섞지 않음)

- Mesh Space Root 체크

* Mesh Space Root : 전체 섞을때 외 어느 동작, 어느 구간만 섞을 경우 보통 켠다. 전체 섞을때 켜두어도 크게 차이는 없다.  

Spine_01 이후로 섞을 예정 (상체) 이기 때문에 위와 같이 설정하게 되었다. 

 

- Runtime 의 경우 디자이너들이 체크시 사용하는 것이므로 눈을 꺼준다. 

 

이렇게 설정할 경우 Jumping 이 계속 저장되어 플레이 되고 있기 때문에 슬롯이 플레이 되어도 초기화 되지 않음 

 

< 적 생성 >

후반 작업에 AI 작업까지 진행할 예정이지만, 테스트가 길어지므로 맨 뒤에 처리할 예정이다.

일단 적을 생성하고 타격하는 작업까지 진행할 예정이다.

 

1. 적 생성하기 

--1) 콘텐츠 > "Enemy" 폴더 생성 > 블루프린트, 캐릭터, " BP_Enemy " 생성

--2) Mesh > Skeletal Mesh 다음과 같이 설정 및 위치 변경 

 

2. 적과 플레이어를 머터리얼로 구분 

--1) 콘텐츠 > Material > 이전에 만들어 둔 머터리얼 인스턴스 복제 > 다음과 같이 rename 

--2) "Black" body color 와 loco color 를 0, 0, 0 값을 넣어주어 블랙으로 만든다.

--3) 또 Instance 만들어서 Enemy 만들어주기. 

--4) 각 BP_Player, BP_Enemy > Mesh 에 들어가서 생성한 머터리얼을 적용해준다. 

   -  BP_Player 의 경우 

   - BP_Enemy 의 경우 

3. 화면에 Enemy 배치

--1) 플레이어 위치 복사, 붙여넣기

--2) z 값 180 주기

* 테스트 수행하기 편하게 세팅 

 

3. Enemy 애니메이션 블루프린트 설정 

--1) Animation > Animation Blueprit > Anim Instance > Skel mannequin > "ABP_Enemy" 생성

 

--2) Direction, Speed 변수 Float 형으로 생성

--3) 플레이어 블루프린트 복사, 붙여넣기 해서 다음과 같이 설정 

- Jumping 스테이트 머신 삭제, BS_Sword 블렌드 스페이스 이용(칼만 들고 있을예정)

 

다음 강의에서는 이번 Direction과 Speed 에 넣을 값을 연결해주는 작업을 진행할 예정이며 앞으로 있을 전투시스템 작업에 대한 전반적인 지표는 아래와 같다.

 

1. 적 타격을 하는 것에 대해 다루기 

  - 적에게 타격당하는 기능을 구현 한 후, 타격 후 플레이어가 콤보를 사용할 수 있는 기능을 구현 예정이다. 

2. 콤보 타격에 대해 다루기 

3. 공격 스킬에 대해 다루기

4. 회피, 타게팅, 블락 등  

 

앞으로 있을 작업들이 기대가 많이 된다. 

 

 

'Unreal Engine > 게임클래스 - 언리얼엔진 기초' 카테고리의 다른 글

[23강] Damaged Enemy - 1  (1) 2024.05.15
[22강] Enemy  (1) 2023.10.13
[20강] Animation Montage  (2) 2023.10.12
[19강] Spawn Actor & AttachToComponent  (1) 2023.10.06
[18강] Anim Notify  (0) 2023.10.06