애니메이션을 섞는다.
생성시 스켈레톤을 선택한다.
각각의 애니메이션을 축에 맞게 배치 후, Shift를 눌러서 이동시켜보면 배치한 애니메이션들이 적절하게 섞이는것을 확인할 수 있다.
// MyAnimInstance.h
private:
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
float Horizontal;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
float Vertical;
// ------------
// MyAnimInstance.cpp
void UMyAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
// .. 생략
auto Character = Cast<AMyCharacter>(Pawn); // ACharacter에서 AMyCharacter로 변경
if (Character)
{
IsFalling = Character->GetMovementComponent()->IsFalling();
Vertical = Character->UpDownValue; // 추가된 코드
Horizontal = Character->LeftRightValue; // 추가된 코드
}
}
// ------------
// MyCharacter.h
public: // 따로 Get 메소드를 만들기 귀찮아서 public으로 열어둠
UPROPERTY()
float UpDownValue = 0;
UPROPERTY()
float LeftRightValue = 0;
// ------------
// MyCharacter.cpp
void AMyCharacter::UpDown(float Value)
{
//UE_LOG(LogTemp, Warning, TEXT("UpDown %f"), Value)
UpDownValue = Value;
AddMovementInput(GetActorForwardVector(), Value);
}
void AMyCharacter::LeftRight(float Value)
{
//UE_LOG(LogTemp, Warning, TEXT("LeftRight %f"), Value)
LeftRightValue = Value;
AddMovementInput(GetActorRightVector(), Value);
}
블렌드 스페이스, 코드 추가, 스테이트 수정까지 완료하고 나면 이동 애니메이션이 방향에 따라 적절하게 섞인것을 볼 수 있다.
ADAD 연타를 하거나 대각선끼리 이동시 부자연스러움이 느껴지는데 이부분은 Interpolation Time을 0.1정도 줘서 자연스럽게 만들어 줄 수 있다.
애니메이션 처리는 서버에 넘길 필요없이 클라에서 처리하면 되는 기술이다.
참고로 블렌드 스페이스 1D는 축이 하나이다.
'언리얼 엔진 > 언리얼 엔진4 입문' 카테고리의 다른 글
[UE4 입문] 소켓 실습 (0) | 2022.09.02 |
---|---|
[UE4 입문] 충돌 기초 (0) | 2022.09.02 |
[UE4 입문] 애니메이션 노티파이 (0) | 2022.09.02 |
[UE4 입문] 델리게이트 (0) | 2022.09.02 |
[UE4 입문] 애니메이션 몽타주 (0) | 2022.09.02 |