본문 바로가기
Unreal

[Unreal] 애니메이션

by imagineer_jinny 2023. 3. 8.

본 내용은 Rookiss의 언리얼 엔진4 입문 (C++ 기반) 강의를 토대로 작성하였습니다.

강의 보러가기: https://inf.run/G6ma

 

1. 애니메이션 기초

 

- 애니메이션 일반 블루프린트에서 적용

 

BP_MyCharacter-> Mesh-> Animation -> Use Animation Asset

 

- Anim Instance : 애니메이션은 별도 클래스에서 관리해주자! 

Animation -> Use Animation Blueprint

 

 

* 새 클래스 만들기

C++ - 모든 클래스 표시 - AnimInstance - 원하는 클래스 이름 - 클래스 생성

BP - 오른쪽 클릭 - 애니메이션 - 애니메이션 블루프린트 - 부모클래스: C++에서 만든 클래스 이름 - 타겟 스캘레톤 선택 - 확인 - 이름: ex) ABP_MyAnim

 

 

* ABP 들어가서 살펴보기

 

* 코드로 와서 변수(speed) 조작하기

만들어준 AnimInstance에서 NativeUpdateAnimation(float DeltaSecond) 함수 만들어준다.

                                              매 프레임마다 한번 씩 들어옴

 

언리얼 호출 순서: 입력 시스템 - 컨텐츠 로직 - AnimInstance 업데이트 로직

 

2. 스테이트 머신

- 애님 그래프로 애니메이션 처리를 하는 것에 대한 문제점

애니메이션이 많아지면? if else 대잔치!

 

- 방법은 상태를 나누는 것!

State를 여러개 추가

ex. Ground, Jumping..

 

- 특정 상태에서 변수와 함수를 통해 특정 기능을 수행하고 싶다.

ABP에서 쓰는 변수/ 함수들은 MyAnimInstance.h , .cpp에서 관리

ex. float Speed, bool IsFalling, void isFalling();

 

- InputComponent가 필요하다면 대상 스크립트에 바인딩 해주자.

ABP에서 쓰는 변수들은 MyAnimInstance.h , .cpp에서 관리

 

- 변수를 만들어줬으면 조건을 적용 시켜주자!

 

 

 

3. 델리게이트

- 어떤 행동이 끝났을 때 무언가를 호출해주고 싶을 때

 

어떻게 가져오지?AnimInstance를 가져오고 불러준다.이후 함수를 만드는데 함수 형식은 멋대로 쓸 수 있는 건 아니고 정해져있음.

 

델리게이트의 장점?

매 프레임마다 상태를 체크할 필요 없이 몽타주가 끝나면 알아서 호출되어서 작동

 

 

4. 애니메이션 노티파이

- 애님 그래프로 애니메이션 처리를 하는 것에 대한 문제점

애니메이션이 많아지면? if else 대잔치!

 

 

 

5. 블렌드 스페이스

- 애니메이션을 섞는 것

 

애니메이션 - 블랜드 스페이스

 

- 가로, 세로 축을 설정해준다(강의예시)

Horizontal, Vertical의 수치에 따라 뭔가를 바꿔주고 싶다.

 

 

순서

1. MyCharacter(움직임의 주체)에서 정보를 세팅한 후

2. 그 정보를 AnimInstance에서(Animation과 관련된 모든 것을 관리하는 곳) 꺼내서 관리한다.

 

MyCharacter

 

 

MyAnimInstance

 

댓글