Unreal Engine5/KDT 2024

[UE5 KDT2024] 14. 애니메이션 블랜드 스페이스

유잉유잉유잉 2025. 2. 26. 00:01
728x90

 

▶️에셋 추출 (익스포트, 이주) 방법

폴더선택 - 오른쪽 - 이주 - 뽑아낼 컨텐츠 확인 - 뽑아낼 경로 폴더 선택 

그냥 컨트롤씨브이 하면 링크 깨짐 

 

 

▶️ 블랜드 스페이스 

언리얼엔진 애니메이션에서 제공하는 기능 중 하나. 

애니메이션을 부드럽게 전환 할 수 있게 해줌.

ex) 앞으로만 이동 중 좌 또는 우 값이 들어오면 부드럽게 전환 해줌 



 


 

 

좌우이동, 뒤로이동 애니메이션을 넣어보자 

 

1. 블랜드스페이스를 만들어보자

 

1) 언리얼 애니메이션 - 블렌드 스페이스 - 스켈레톤 선택 - BS_PlayerKnightJog

 

2) BS_PlayerKnightJog 에디터 이동 

  • 애니메이션 끌어와서 추가하면 .이 생성됨
  • 왼쪽 에셋 디테일 - 가로축의 최소 축 값, 최대 축 값에 따라 보간해줌. 

 

(1) 가로축 이름은 LeftRight 변경

 - 최소 축 값 : -1, 최대 축 값 : 1

 

(2) 세로축 이름은 FrontRear, 축 값 -1 ~ 1 

 

(3) Jog_Bwd 추가 -> 드래그해서 아래 가운데 

- Shift 누르고 놓으니까 이쁘게 놓아짐 

- 상단값 조정해서 변경도 가능

 

(4) Jog_Fwd 추가 -> 위 가운데

 

(5) Jog_Left, Jog_Right 추가 



-> 컨트롤 누른상태에서 X 위치 바꾸면 보간 값에 따라 적용되는 애니메이션 확인 가능 



2. AnimBase : 방향값 변수 추가, 방향값 변경 함수 추가 

header

UPROPERTY( VisibleAnywhere, BlueprintReadOnly )
FVector2D mMoveDir;
...
public : 
	void SetMoveDir( FVector2D moveDir );

cpp

UAnimBase::UAnimBase()
{
	mMoveSpeed	= 0.f;
	mMoveDir	= FVector2D::ZeroVector;
}
void UAnimBase::SetMoveDir( FVector2D moveDir )
{
	mMoveDir = moveDir;
}

 

3. PlayerBase.cpp : 플레이어 이동시 방향벡터 anim에 알려주기 

#include "../Animation/AnimBase.h"
..

void APlayerBase::BeginPlay();
{
	..
	mAnim = Cast<UAnimBase>( GetMesh()->GetAnimInstance() );
}

void APlayerBase::MoveAction( const FInputActionValue& value )
{ ...
	if ( !IsValid( mAnim ) )
		return;

	mAnim->SetMoveDir( axis );
}

 

4. BPA_AnimKnight 에디터 - Run 스테이드 에디터 - BlendSpace Player ‘BS_PlayerKnightJog’ 선택

 

5. 이동 방향에 따른 이동 벡터 설정해주기 : 

(1)BS_PlayerKnightJog 선택 후 디테일창 - 좌표 - LeftRight - 핀 - mMoveDir - Y

(2)BS_PlayerKnightJog 선택 후 디테일창 - 좌표 - FrontRear - 핀 - mMoveDir - X

 

6. 기존거 지우고 outpose와 연결 

 

 => 실행하면 보간 적용

 

 

 

[버그수정🐜]

1. Run_Start와 RunStop도 블랜드스페이스 생성 

 

1) 블랜드스테이트 추가 - BS_PlayerKnightJog_Start 생성

가로세로축 위와 동일, -1 ~ 1 범위도 동일

Jog_위치_Start 배치

 

2) 블랜드스테이트 추가 - BS_PlayerKnightJog_End 생성

가로세로축 위와 동일, -1 ~ 1 범위도 동일

Jog_위치_Stop 배치

 

2. BPA_AnimKnight - Run_Start, End 스테이트에 블랜드 스테이트 적용

 

이전거 제거하고 blendSpace 검색해서 추가, 축값 적용

ㄴ 오른쪽처럼 MoveDir 가져와서(구조체 핀 분할) 연결해도 됨 

 

728x90