관리 메뉴

Mini

블렌드 스페이스 본문

UE5

블렌드 스페이스

Mini_96 2022. 8. 14. 22:19

* 블렌드 스페이스

기존 : 앞으로가는 애니메이션만 존재, 좌로걸을떄, 뒤로걸을떄???

해결1 : if-else 중첩.. (-) 복잡

해결2: 블렌드 스페이스 => 여러 애니메이션 합치기. 여러 애니메이션 구분 편하게

 

- 구현

1. 애니메이선::블렌드스페이스 생성 (이름:BS_Move)

2. Horizontal, Vertical 이름설정

3.Left,Right,Up,Down 애니메이션 하얀점 위치에 넣기 && 값범위설정(-1~1)

4. 애니메이션블루프린트::Speed>0 포즈교체

5.캐릭터::새변수 => 움직일때 Value 저장 =>애님인스턴스에서 사용 => BP에 전달

void AMyCharacter::UpDown(float Value)
{
	//if (Value == 0.f) return;
	//UE_LOG(LogTemp, Warning, TEXT("UpDown %f"), Value);
	UpDownValue = Value;
	AddMovementInput(GetActorForwardVector(), Value);
}

void AMyCharacter::LeftRight(float Value)
{
	//if (Value == 0.f) return;
	//UE_LOG(LogTemp, Warning, TEXT("LeftRight %f"), Value);
	LeftRightValue = Value;
	AddMovementInput(GetActorRightVector(), Value);
}

6.애님인스턴스::

호리존탈,버티칼  변수 => 캐릭터인스턴스에서 값얻어서 저장

void UMyAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
	Super::NativeUpdateAnimation(DeltaSeconds);

	auto Pawn = TryGetPawnOwner();
	if (IsValid(Pawn))
	{
		Speed = Pawn->GetVelocity().Size();

		auto Character = Cast<AMyCharacter>(Pawn);
		if (Character)
		{
			isFalling = Character->GetMovementComponent()->IsFalling();

			Vertical = Character->UpDownValue;
			Horizontal = Character->LeftRightValue;
		}
	}
}

7. ABP에 값 전달

8. 잡기술: 넘어갈시간 설정 => 상하좌우 전환시 좀더 자연스럽게

'UE5' 카테고리의 다른 글

소켓 실습  (0) 2022.08.15
충돌 기초  (0) 2022.08.15
애니메이션 노티파이  (0) 2022.08.14
델레게이트  (0) 2022.08.14
애니메이션 몽타주  (0) 2022.08.14