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

[4강] Animation Blueprint

whereareyoung 2023. 7. 13. 17:43

상속 개념 정리 (Unreal Engine)

이번강의에서는 실습보다 이론 위주 강의가 진행되었는데 강사님이 서두에 지루할 수도 있다고 걱정하신 것에 비해, 지금까지 들었던 것들중 가장 최고의 강의였다.

Unity로 게임을 제작하며 "상속"의 개념을 미리 익혀왔기 때문에 이해가 더 쉬었을 수 있는데 블루프린트 안에서의 상속이 어떻게 진행되는지 완벽하게 정리해주셨다. 

* 상속 : 부모의 기능을 자식이 쓰고, 자식이 자식만의 기능을 추가해서 사용하기 위해서 필수적인 개념 

 

< 기본적으로 알아야 하는 것 >

- 클래스 : 특성 모아놓은 묶음

- 객체 : 클래스의 변수 (멤버변수 : 클래스에 정의되어 있는데 필요시 추가해서 사용할 수 있음 )

- 상속 : 클래스 받아와서 다른 특징 추가해서 씀

 

클래스 순서 (in Unreal Engine)

클래스 순서

1) Object : 최상위 클래스, 별다른 기능이 없음

* Unity의 Create Empty 같은 기능으로 그저 묶어주는 역할

2) Actor : 이 단위부터 Transform 을 가짐, 화면에 배치 가능 

3) Pawn : 이 단위부터 Controller (입력관리)를 가짐, Actor 클래스 + 입력받아 움직임 가능 

4) Character : 이 단위부터 "CharacterMovement Component"을 가짐, Pawn 클래스 + 캐릭터 움직임, 이동, 중력 걸을때 속도등 제어가능  

 

지금까지 실습했던 "BP_Player" 의 경우 Character 클래스의 모든것을 상속받고 + Component 가 추가된 상태 

 

컴포넌트 순서 (in Unreal Engine)

* 컴포넌트 : 클래스에 추가적인 기능 추가

컴포넌트 순서

1) Actor Component : Component 의 최상위 개념, 데이터만 관리하는 기능 

2) Scene Component : Transform 을가지고 있음, 실제 화면에 구현되어 보여질 수 있음

예를들어,

- 빨간 박스 안의 컴포넌트들은 Scene Component를 상속받아 Transform을 가지고 있어 화면에 구현됨  

- 노란 박스 안의 "CharacterMovement (상속됨)" 는 Actor Component 만 상속받아 화면에 구현되지 않음, 데이터만 가지고 있음 

 

하나의 블루프린트가 어떤 구조를 거쳐 만들어졌는지 이해해야함 

ex)  " BP_Player " : 이모든걸 포함해서 자기자신을 정의할 모든 것

기존에 실습했던 "BP_Player" 의 "Add Movement Input" 의 경우 Pawn에 정의되어있음 

타깃을 보면 Self라고 되어있는데 자기자신 이 가지고 있는 함수중에 Add Movement 를 호출해 달라고 짠 거임 

* Pawn에 정의 되어있어 Actor 클래스 Transform (위치값) + Controller (입력관리)를 가짐

따라서 "Add Movement Input" 은 입력을 받아 움직임이 가능한 함수 

 

 

 

애니메이션 설정 기본원리 

1. Character 폴더 > 탐색기에서 표시 

윈도우 창에서 제공받은 애니메이션 파일 Import 

 

2. BluePrints폴더 > 애니메이션 블루프린트  > AnimInstance 생성 > 스켈레톤 선택 > "ABP_Player" 으로 생성

애니메이션 블루프린트에서, 최종 애니메이션 포즈에 연결된 동작이 최종적으로 화면에 나타나는 동작이 된다. 

 

우측 에셋브라우저에 임포트한 애니메이션 리스트가 뜨는데,

Idle 애니메이션을 찾아 작업창에 불러온 후 최종 애니메이션 포즈에 연결하여준다. 

컴파일 후 재생버튼을 통해 애니메이션이 잘 적용되는 것을 확인할 수 있다. 

 

애니메이션 캐릭터와 연결시키기 

"BP_Player" > Mesh (상속됨) > Animation > 탭에서 Use Animation Blueprint, ABP_Player를 설정해준다. 

플레이 화면에서 애니메이션이 잘 작동되는 것을 확인할 수 있다. 

 

 

BlendSpace 애니메이션 설정 

기본원리를 기반으로 속도 변수를 사용하여 애니메이션 재생을 해 볼것이다. 

BlendSpace는 변수에 의해서 어떤 동작에 의해 한 동작을 선택할 수 있게한다. 

 

 

작업중인 BlendSpace 1D(한가지 변수 선택가능), "BS_Unarmed" 창에서 다음과 같이 설정 

 

하단 그래프를 다음과 같이 세팅  

* 값 위치에 따라 Idle , walk, run을 순서대로 배치, 배치 후 하얀 node가 생김

녹색 노드를 움직여 미리보기가 가능

 

"ABP_Player" 최종애니메이션 포즈에 "BS_Unarmed" 를 연결 

 

이후 상단에 이벤트 그래프를 세팅해 설정을 마쳐야 한다. 

 

이벤트 그래프 실행 관련 이해를 돕는 예제

- Blueprint Update Animation : 애니메이션 블루프린트가 수행되는 프레임 만큼 호출이 된다, 게임 플레이 모드가 아니여도 계속 실행되어 플레이 여부에 상관없이 진행  ex) 애니메이션 30프레이이면 30번 호출 

- Try Get Pawn Owner : 지금 ABP_Player를 소유하고 있는 오너 (현재는 BP_Player - Mesh), 게임 모드일 때만 Character를 돌려준다 ex) 플레이 버튼을 눌렀을때만 지속해서 BP_Player (소유오너)를 출력

 

이벤트 그래프 실행 정리 

플레이 상황이 아니라면  "Blueprint Update Animation" 함수가 계속 진행 

플레이 상황이라면 "Try Get Pawn Owner"로 흘러감 

 

 

 

다음 강의에서는 이벤트 그래프 세팅을 마치고, 

Blend Space 활용한 Animation 제작을 이어서 진행할 예정이다.