- 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