• ACharactor 에 점프함수가 구현되어 있다.
  • 입력에 있는 점프와 바인딩을 한다.
AABCharacter::AABCharacter()
{
 ...

    ArmLengthSpeed = 3.0f;
    ArmRotationSpeed = 10.0f;
    GetCharacterMovement()->JumpZVelocity = 800.0f; 
}

void AABCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
...
    PlayerInputComponent->BindAction(TEXT("Jump"), EInputEvent::IE_Pressed, true, &AABCharacter::Jump);
}

  • 애니메이션블루프린트는 현재 캐릭터가 점프, 땅 위 인지 알 수 있어야 한다
  • 현재 움직임을 파악하기 위해 폰의 무브먼트 컴포넌트 함수 제공
  • IsFalling() : 공중에 떠 있는지
  • IsSwimming() : 현재 수영 중인지
  • IsCrouching() : 쭈구려 있는지
  • IsMoveOnGround() : 땅 위에서 이동 중인지
  • 폰의 점프 상황을 보관하기 위해 IsInAir 을 선언하고, 폰 무브먼트 컨포넌트 IsFalling() 함수를 호출해 두 값이 일치하도록 만든다.
class KGAME_API UABAnimInstance : public UAnimInstance
{
....
    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
    bool IsInAir;
};
UABAnimInstance::UABAnimInstance()
{
    CurrentPawnSpeed = 0.0f;
    IsInAir = false;
}

void UABAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
    Super::NativeUpdateAnimation(DeltaSeconds);
    auto Pawn = TryGetPawnOwner();
    if (::IsValid(Pawn))
    {
        CurrentPawnSpeed = Pawn->GetVelocity().Size();
        auto Character = Cast<ACharacter>(Pawn);
        if (Character)
        {
            IsInAir = Character->GetMovementComponent()->IsFalling();
        }
    }
}

 


애님블루프린트

 

 

BaseAction

 

+ Recent posts