* 블렌드 스페이스
기존 : 앞으로가는 애니메이션만 존재, 좌로걸을떄, 뒤로걸을떄???
해결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 |