1 분 소요

1. 전체 구조

Image

  1. C++에서 UABAnimInstance를 상속하고 필요한 데이터를 선언 및 정의
  2. Animation Blueprint에서 만든 AnimInstance 기반의 C++ 을 상속하고 본격적인 애니메이션을 정의

       

2. ABP 구조

Image

  1. ABP 내부에서 State machine을 만듦
  2. State Machine 내에서 State를 생성하고 애니메이션을 지정
  3. 필요에 따라 State Alias를 사용해서 State를 지정(if문이라고 생각하면 편함)

       

3. AnimInstance C++ 생성

Image

//Header
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Character)
TObjectPtr<class ACharacter> Owner;

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Character)
TObjectPtr<class UCharacterMovementComponent> Movement;

//Cpp
Owner = Cast<ACharacter>(GetOwningActor());
if (Owner)
{
	Movement = Owner->GetCharacterMovement();
}

다음과 같이 Character를 가져오고 반대로 Character에서 Animation을 가져올 수 있다

   

생성 시 다음 함수를 기억

// Animation init 시 호출
virtual void NativeInitializeAnimation() override;

// Animation 매 프레임 호출
virtual void NativeUpdateAnimation(float DeltaSeconds) override;

       

4. ABP 상세설정

4-1. State Machine

Image

  1. 가장 바깥쪽인 AnimGraph에서 생성가능
  2. 결과물을 Cache로 만들어 낼 수 있다.
    1. New Save Cache Pose 로 저장
    2. Use cached pose 로 사용 가능

   

4-2. Bland Space(1D)

  1. Animation > Legacy > Bland Space 1D로 생성
    Image

  2. 간선에 몇개의 애니메이션을 추가해서 특정 값에 따라 Blend 가능
    Image

  3. 특정 값은 Horizontal Axis에서 설정 가능하다

4-3. State

  1. State Machine을 만들면 그 안에서 State를 생성할 수 있다.
    Image

  2. State 내부에서는 Blue Print로 작업 가능
    Image

Apply Additive를 사용하면 두 애니메이션을 합칠 수 있음

Image

4-4. State Alias

State Alias를 사용하여 상태를 지정하여 해당 상태일 때 조건을 만족하면 다른 상태로 넘어가게 할 수 있다.

  1. 노드 생성
    Image

  2. 진입점(Locomotion 상태에서만 들어올 수 있음)
    Image

  3. 이동 조건 처리(bIsJumping 이 True 면 상태 이동)
    Image
    조건을 만족하지 않으면 State가 변경되지 않음

댓글남기기