게임개발/Unreal 블루프린트

[Unreal_블루프린트]#4_Armed Character Animation

Hardii2 2022. 9. 3. 00:55
 
Cookie
아티스트
NewJeans
앨범
NewJeans 1st EP 'New Jeans'
발매일
2022.08.01

 

[Unreal_블루프린트]#4_Armed Character Animation

Unreal 블루프린트 개발 중 "Armed Chracter Animation"에 대해 알아보겠습니다.

"블루 프린트" 활용에 대한 내용입니다.

 

 


 

State Machine

 

1. Action Mapping 추가

1. 프로젝트 세팅 -> 입력
2. Acition Mapping 추가 -> EquipArmor 생성 -> 키보드 '1' 번으로 입력 바인딩

 

2. 기존의 State Machine에 Armed 상태 추가

1. Draw Sword1 + Draw Sword2 : 칼을 뽑는 Animation을 통해 무장 상태로 가는 과정
2. Sheath Sword1 + Sheath Sword2 : 칼을 집어넣는 Animation을 통해 비 무장 상태로 가는 과정

 

* 애님 에셋 리타깃팅 등의 Animation Asset을 준비하는 과정은 생략, 위 링크를 참조

 

3. Unarmed 상태 -> Armed 상태 전이 과정

Unarmed -> Draw 1

1. Unarmed -> Draw 1 : *Drawing 변수가 True 일때 전이가 발생합니다.
2. Draw1 -> Draw2 : Automatic Rule Based, 자연스러운 전이 발생
3. Draw2 -> Armed : Automatic Rule Based, 자연스러운 전이 발생

* Drawing 은 칼을 뽑는 모션을 의미합니다.

 

4. Armed 상태 -> Unarmed 상태 전이 과정

Armed -> Sheath 1

1. Armed -> Sheath 1 : *Sheathing이 True일때 전이가 발생합니다.
2. Sheath 1 -> Sheath 2 : Automatic Rule Based, 자연스러운 전이 발생
3. Sheath 2 -> Unarmed : Automatic Rule Based, 자연스러운 전이 발생

* Sheathing은 칼을 집어넣는 모션을 의미합니다.

 

Blueprint 작업

 

1. Custom Event 생성 : Equip Weapon + Unequip Weapon

Character Blueprint의 Event Graph 화면

* Character 블루프린트 클래스에서 Animation 블루프린트 클래스로 변수 값을 넘겨줍니다

1. "Equip Armor" 액션 이벤트 생성
2. "Drawn" 변수 생성 : Armed 상태인가? Unarmed 상태인가? 판가름하기 위한 변수!
3. "Branch" 이벤트 생성
4. 키가 눌렸을 때, "Drawn" 변수가 True 라면 무장 상태에서 비 무장 상태로 전이 발생(Unequip Weapon)
5. 키가 눌렸을 때, "Drawn" 변수가 False 라면 비 무장 상태에서 무장 상태로 전이 발생(Equip Weapon)

 

2. Equip Weapon + Unequip Weapon 커스텀 이벤트 구현

Character Blueprint의 Event Graph 화면

* 간단하게 State Machine 전이 조건에 필요한 변수 값들을 세팅하는겁니다!

1. Unequip Weapon : 이벤트 발생 시 Sheathing 은 "True"가 됩니다.

2. Equip Weapon : 이벤트 발생 시 Sheathing은 "False"가 되며, "Drawn" 또한 "Fasle"가 됩니다.  

 

*********** 아래부터 매우 중요!!!!!!!!!!!!!!!!!!

 

Character Blueprint와 Animation Blueprint 간의 상호작용

 

1. Event Graph에서 전달받은 변수 값 설정

Animaition Blueprint의 Event Graph 화면

* 우 클릭 후 "Try Get Pawn Owner" -> "BP_Character"로 형 변환을 통해 쉽게 상호작용 할 수 있죠!

1. Character 블루프린트 클래스의 Event Graph에서 설정한 변수를 가져옵니다.
2. Animaiton 블루프린트 클래스의 "Drawing"과 "Sheathing"에 값을 넘겨줍니다.

* 같은 변수 이름을 각각 Character와 Animation 블루프린트에 생성하면 이해하기 편하죠!

 

 

Notify 사용

 

* 중요!!!!!!!!!!!!!!!!!!!!!!!!

왜 Notify가 필요한가?

: Unarmed -> Armed 혹은 Armed -> Unarmed로 전이가 정상적으로 종료되어 추후에 발생할 Armed -> Unarmed      혹은 Unarmed -> Armed로 서로 간의 재 전이를 정상적으로 시작하기 위해서 우리는 각 상태 직전의 Animation에    서 전이가 완료됐음을 알리는 "변수" 값의 변경이 필요하겠죠? 이때, 각 상태의 직전 상태, 예를 들면 "Draw 2" 혹    은 "Sheath 2"에 "Notify"를 설치해주어 해결할 수 있습니다!  

 

1. Nofity 블루프린트 클래스 생성

1. Content 폴더 -> 우 클릭 -> 블루프린트 클래스 생성
2. 모든 클래스 -> Anim Notify를 부모 클래스로 설정

 

2. GetNotifyName + Received_Notify 구현

1. 왼쪽 상단의 함수 탭 -> 오버라이드 생성
2. Get Nofity Name 선택
3. Received Nofy 선택 

 

3. Get Notify Name 구현

Notify 블루프린트 클래스의 Get Notify Name 함수

간단합니다, Return Value에 반환하고자 하는 이름 작성

 

4. Received Nofity 구현

* 특정 Animation Asset의 Play가 완료되어 상태 전이가 정상적으로 마쳤다는 것을 Character Blueprint에 알리기 위함입니다! 

1. Character 블루프린트 클래스를 얻어옵니다.
2. Character 블루프린트 클래스의 "Equipped Weapon" 커스텀 이벤트를 실행시킵니다.

 

* 또 다른 Notify 또한 동일합니다! 실행시킬 이벤트를 "Equipped Weapon"에서 "Unequipped"로 변경하면 됩니다.

 

5. Aniamtion Asset에 Notify 추가

Draw 2 애니메이션 에셋
Sheath 2 애니메이션 에셋