공부용 이모저모
UE4 - 점프기능 구현 본문
이득우의 언리얼 C++ 게임 개발의 정석 책보고 따라하기
점프는 Character에서 기본으로 세팅되어있다.
GetCharacterMovement()->JumpZVelocity : 캐릭터의 점프 강도. 기본값은 420이다.
AABCharacter::AABCharacter()
{
....
GetCharacterMovement()->JumpZVelocity = 800.0f; //800으로 임의 상승
}
void AABCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
PlayerInputComponent->BindAction(TEXT("Jump"), EInputEvent::IE_Pressed, this, &ACharacter::Jump);
//점프액션을 취한다.
}
이제 점프중인지에 대한 스테이터스 확인을 해야하는데,일단 언리얼 폰의 무브먼트가 제공하는 상태는 다음과 같다.
IsFalling(): 현재 떨어지고 있는가?(바닥에 닿지않았는가?)
IsSwimming():현재 수영중인가?
IsCrouching():현재 앉아있는가?
IsMoveOnGround():땅 위에서 이동중인가?
여기서 점프중인가에 쓰일것은 IsFalling이다.
AnimInstance의 헤더에 해당 변수를 추가해준다.
ABAnimInstance.h에 추가
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
bool IsInAir;
EditAnywhere = 블루프린트 단계에서 수정이 가능해진다.
BlueprintReadOnly = 블루프린트에 해당 변수 표시
Category = 블루프린트에 리스트될 카테고리(Pawn 메뉴에 리스트업된다)
ABAnimInstance.cpp에 추가
UABAnimInstance::UABAnimInstance()//생성자
{
...
IsInAir = false;
}
//애니메이션 데이터 받아오기
void UABAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
...
if(::IsValid(Pawn))
{
...
auto Character = Cast<ACharacter>(Pawn);
if(Character)
{
//캐릭터의 떨어짐 여부를 저장한다.
IsInAir = Character->GetMovementComponent()->IsFalling();
}
}
}
새로 추가한 IsInAir은 떨어지는 여부를 체크하며,애님 블루프린트에 표기된다.
이런 스테이트에서 스테이트로의 이동조건을 트랜지션이라 부른다.
애니메이션 리타겟
작 중 책에서 쓰이는 예시의 경우, 점프 애니메이션이 없다. 하지만 기본 언리얼 마네킹에는 점프가 있다.
그래서 언리얼 마네킹의 점프를 다른 메시에 적용시키는 방법을 설명 해주고 있다.
사용하고 있는 매쉬도 리타겟 매니저로 재저장하면 서로 공유가 가능해진다.
리타깃은 임의로 해주는 것이기 때문에 애니메이션이 이상하게 나올 가능성도 있다.
JumpLoop->JumpEnd가 아님에 유의!
JumpStart-> JumpLoop / JumpEnd -> Ground는 애니메이션과 연관되있으므로
먼저 애니메이션 연결부터 한다.
Jump_Start에서 Jump_Loop로 넘어가는 트랜지션에서는,
Jump_Start에서 사용하고있던 애니메이션의 정보값을 받아오는게 가능하다.
즉 바뀌기 직전의 애니메이션 마지막 상태값을 얻어오는것이 가능하다.
Time_Remaining - 애니메이션의 남아있는 시간을 가져온다
Length - 애니메이션의 길이를 가져온다
Current Time - 애니메이션이 얼마나 재생되었는가를 가져온다.
ratio는 비율이며, 1이 100%이다. 예를들어,
Time Remaining(ratio)의 반환값이 0.13이라면 애니메이션 끝가지 13%가 남아있다는 의미이다.
'UE4 - C++' 카테고리의 다른 글
UE4 - 잔상 효과 만들기(SPAWN/TIME LINE/POSEABLEMESH) (0) | 2021.09.24 |
---|---|
UE4 - 애니메이션 몽타주 (0) | 2021.09.09 |
UE4 - 일인칭 슈팅 C++ 튜토리얼 (0) | 2021.07.23 |
UE4 - 플레이어 입력 및 폰 (0) | 2021.07.21 |
UE4 - 게임조종 카메라 (0) | 2021.07.21 |