반응형
[Unreal/C++] AnimInstance 구현
AnimInstance를 상속받는 클래스 생성
코드 작성
// MyAnimInstance.h
#pragma once
#include "CoreMinimal.h"
#include "Animation/AnimInstance.h"
#include "DefaultCharacterAnimInstance.generated.h"
UCLASS()
class MAINPROJECT_API UDefaultCharacterAnimInstance : public UAnimInstance
{
GENERATED_BODY()
// UAnimInstance에 작성된 BeginPlay와 update를 오버라이드
public :
virtual void NativeBeginPlay() override;
virtual void NativeUpdateAnimation(float DeltaSeconds) override;
// 캐릭터의 속도와 방향을 이용할 예정이므로 변수를 생성한다.
protected :
UPROPERTY(BlueprintReadOnly, EditAnywhere)
float Speed;
UPROPERTY(BlueprintReadOnly, EditAnywhere)
float Direction;
// 이 AnimInstance를 가지고 있는 캐릭터를 위한 변수
private :
class ACharacter* OwnerCharacter;
};
// MyAnimInstance.cpp
#include "Character/DefaultCharacterAnimInstance.h"
#include "GameFramework/Character.h"
void UDefaultCharacterAnimInstance::NativeBeginPlay()
{
Super::NativeBeginPlay(); // 부모 호출
// OwnerCharacter를 가져온다.
OwnerCharacter = Cast<ACharacter>(TryGetPawnOwner());
}
void UDefaultCharacterAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
Super::NativeUpdateAnimation(DeltaSeconds);
// NativeUpdateAnimation은 에디터에서도 동작하기 때문에 널체크는 필수입니다.
if (OwnerCharacter == nullptr) return;
// OwnerCharacter의 Speed를 가져온다.
Speed = OwnerCharacter->GetVelocity().Size2D();
}
만든 클래스를 상속받는 애니메이션 블루프린트를 만든다.
이 때 주의할점은 클래스를 우클릭해서 기반 블루프린트를 만들게 되면 AnimGraph가 보이지 않는다.
사용할 스켈레톤을 설정해주고 만들어놓은 클래스를 상속받는다.
이름은 관례에 맞게 ABP 로 시작하도록 지정한다.
만들어지게 되면 AnimGraph를 볼 수 있고 만들어진 변수를 사용할 수 있습니다.
반응형
'Unreal > Manual' 카테고리의 다른 글
Unreal 캐릭터 AimOffset 구현하기 (1) | 2023.11.24 |
---|---|
Unreal 캐릭터 걷기, 뛰기, 전력질주 Blend Space 구현 (0) | 2023.11.22 |
Unreal C++ 기본 캐릭터 움직임, 설정 구현 (0) | 2023.11.22 |
Unreal C++ DefaultPawnClass 변경 하기 (1) | 2023.11.22 |
Unreal C++ 캐릭터 SkeletalMesh 변경하기 (1) | 2023.11.22 |