- 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();
}
}
}
'Unreal > Game 1 (C++)' 카테고리의 다른 글
10.델리게이트, 다이나믹 , 멀티캐스트 , 다이나믹 멀티, 시그니처 (1) | 2019.05.02 |
---|---|
9.애니메이션 몽타주 (1) | 2019.05.02 |
7.애니메이션 폰과 데이터 연동 (0) | 2019.05.02 |
6.3인칭 컨트롤 구현 (디아블로방식) (0) | 2019.05.02 |
6.3인칭 컨트롤 구현 (GTA 방식) (0) | 2019.05.02 |