[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 상태 전이 과정
1. Unarmed -> Draw 1 : *Drawing 변수가 True 일때 전이가 발생합니다.
2. Draw1 -> Draw2 : Automatic Rule Based, 자연스러운 전이 발생
3. Draw2 -> Armed : Automatic Rule Based, 자연스러운 전이 발생
* Drawing 은 칼을 뽑는 모션을 의미합니다.
4. Armed 상태 -> Unarmed 상태 전이 과정
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 블루프린트 클래스에서 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 커스텀 이벤트 구현
* 간단하게 State Machine 전이 조건에 필요한 변수 값들을 세팅하는겁니다!
1. Unequip Weapon : 이벤트 발생 시 Sheathing 은 "True"가 됩니다.
2. Equip Weapon : 이벤트 발생 시 Sheathing은 "False"가 되며, "Drawn" 또한 "Fasle"가 됩니다.
*********** 아래부터 매우 중요!!!!!!!!!!!!!!!!!!
Character Blueprint와 Animation Blueprint 간의 상호작용
1. 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 구현
간단합니다, Return Value에 반환하고자 하는 이름 작성
4. Received Nofity 구현
* 특정 Animation Asset의 Play가 완료되어 상태 전이가 정상적으로 마쳤다는 것을 Character Blueprint에 알리기 위함입니다!
1. Character 블루프린트 클래스를 얻어옵니다.
2. Character 블루프린트 클래스의 "Equipped Weapon" 커스텀 이벤트를 실행시킵니다.
* 또 다른 Notify 또한 동일합니다! 실행시킬 이벤트를 "Equipped Weapon"에서 "Unequipped"로 변경하면 됩니다.
5. Aniamtion Asset에 Notify 추가
'게임개발 > Unreal 블루프린트' 카테고리의 다른 글
[Unreal_블루프린트]#7_무기 장착, Armor (0) | 2022.09.06 |
---|---|
[Unreal_블루프린트]#6_Orient Rotation To Movement, 가속 방향에 회전 맞추기 (0) | 2022.09.06 |
[Unreal_블루프린트]#5_Armed Character 추가 세팅 (0) | 2022.09.06 |
[Unreal_블루프린트]#3_Anim Asset 변환, Anim Asset 리타겟팅 (0) | 2022.09.02 |
[Unreal_블루프린트]#1_Character Movement (0) | 2022.09.01 |