1. 애니메이션 기본 제작
다양한 상황에 맞는 애니메이션을 재생할 수 있도록 애니메이션 블루프린트 기능을 활용한다.
- 애님 인스턴스: 애니메이션 블루프린트의 기반
- 스켈레탈 메시를 소유하는 폰의 정보를 받아 애님 그래프가 참조할 데이터 제공
- 블루프린트와 C++로 제작가능
- 애님 그래프: 시각적 도구를 사용해 애니메이션 시스템을 제작하도록 설계
- 애님 인스턴스의 변수 값에 따라 변화하는 애니메이션 시스템을 설계하는 공간
- 블루프린트로만 제작 가능
- 체계적인 애니메이션 시스템 설계를 위해 스테이트 머신 제공
새로운 C++클래스를 만든다 부모는 AnimInstance로 이름은 ABAnimInstance로 한다.
CurrentPawnSpeed라는 이름의 float 변수를 만들어 이동 속도에 따라 애니메이션을 다르게 구현해보자.
ABAnimInstance.h
#pragma once
#include "ArenaBattle.h"
#include "Animation/AnimInstance.h"
#include "ABAnimInstance.generated.h"
UCLASS()
class ARENABATTLE_API UABAnimInstance : public UAnimInstance
{
GENERATED_BODY()
public:
UABAnimInstance();
private:
// CurrentPawnSpeed 변수를 애님 그래프에서 사용할 수 있도록 UPROPERTY와 EditAnywhere 추가
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
float CurrentPawnSpeed;
};
블루프린트 접근 방법
- BlueprintReadOnly
- BlueprintReadWrite
ABAnimInstance.cpp
#include "ABAnimInstance.h"
UABAnimInstance::UABAnimInstance()
{
CurrentPawnSpeed = 0.0f;
}
코드를 컴파일하면 애님 인스턴스의 속성을 애니메이션 블루프린트에서 확인할 수 있다.
블루프린트의 클래스 정보를 클릭해 부모클래스 변경 적용
- 애니메이션블루프린트를 열어 툴바의 클래스 세팅을 눌러 부모 클래스 정보 변경
- 클래스 변경 후 컴파일
- 상속된 변수 표시 박스를 체크해 CurrentPawnSpeed 변수 노출
- AnimGraph로 이동
- 변수를 작업 공간에 드래그하고 Get -메뉴 선택
- BlueprintReadWrite로 선언했다면 Set활성화됨
- Get노드를 드래그한 후 ">" 노드 선택
- 비교값이 bool 형식으로 나오므로 bool로 포즈 블렌딩 노드 추가
- True/False포즈에 맞는 애니메이션 연결
애님 프리뷰 에디터에서 CurrentPawnSpeed 값마다 다른 애니메이션을 재생하는 캐릭터를 확인할 수 있다.
'언리얼C++게임개발 > 07.애니메이션 시스템의 설계' 카테고리의 다른 글
점프의 구현 (0) | 2023.11.26 |
---|---|
스테이트 머신 제작 (1) | 2023.11.26 |
[애니메이션시스템] 폰과 데이터 연동 (0) | 2023.11.26 |