[UE5 KDT2024] 14. 애니메이션 블랜드 스페이스
▶️에셋 추출 (익스포트, 이주) 방법
폴더선택 - 오른쪽 - 이주 - 뽑아낼 컨텐츠 확인 - 뽑아낼 경로 폴더 선택
그냥 컨트롤씨브이 하면 링크 깨짐
▶️ 블랜드 스페이스
언리얼엔진 애니메이션에서 제공하는 기능 중 하나.
애니메이션을 부드럽게 전환 할 수 있게 해줌.
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 가져와서(구조체 핀 분할) 연결해도 됨