[UE5] 캐릭터 이동과 점프

연하·2024년 5월 7일
0

Trapper

목록 보기
2/32
post-thumbnail

24.05.08 - 24.05.22
프로토타입 구현 일지

DAY1 [Character Locomotion]

기획팀분들이 넘겨주신 기본 조작 FSM.


캐릭터 메시와 애니메이션을 아트분들이 넘겨주기 전까진 언리얼의 마네킹 메시와 애니메이션 에셋을 사용해 임시로 구현하기로 했다. 기본적인 상하좌우 이동은 저번에 구현해놨으므로, 필요할 때마다 하나씩 구현하는걸로 하고 일단은 애니메이션과 에임 오프셋을 구현하기로 했다.

우선 애니메이션 리타게팅을 통해 애니메이션 에셋을 UE5 마네킹 스켈레톤에도 쓸 수 있게끔 변환해주었다. 변환된 애니메이션을 사용해 블렌드 스페이스를 만들어줬음!

void UPlayerAnimInstance::NativeInitializeAnimation()
{
	Super::NativeInitializeAnimation();

	Owner = Cast<ACharacter>(GetOwningActor());
}

void UPlayerAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
	Super::NativeUpdateAnimation(DeltaSeconds);

	if (!Owner)
	{
		Owner = Cast<ACharacter>(GetOwningActor());
	}
	else
	{
		Speed = Owner->GetVelocity().Size2D();
		Angle = CalculateDirection(Owner->GetVelocity(), Owner->GetActorRotation());
	}
}

애니메이션에 변수도 연결해주고, AnimGraph에서 연결도 해주면

이렇게 잘 움직인다!

이제 점프 애니메이션을 위해 스테이트 머신을 만들어 주었다.

잘 동작은 하는데, 랜딩 애니메이션이 재생될때 갑자기 캐릭터가 축소해버리는 문제가 생긴다.

이때는 그 애니메이션에 들어가서, Additive Anim Type을 No additive로 바꿔주면 된다.

이제 점프는 잘 되지만, Landing Animation이 끝난 후 Grounded로 전환되기 전 딜레이가 너무 어색해서 마음에 들지 않는다. Blend Settings의 Mode도 이것저것 바꿔봤는데, 여전히 비슷한 문제가 있다. 이걸 어떻게 해결하는게 좋을까? 애니메이션 자체의 문제일까? 해결이 가능한걸까?

검색을 해보니, 이 블로그에서 실마리를 찾을 수 있었다. Additive Animation을 사용하는 방법이다. 먼저, 아까 내가 껐던 Additive Anim Type을 다시 Local Space로 돌려주자.!

Apply Additive 노드를 추가해 베이스 포즈로 Locomotion을, Additive로 Land Animation을 넣어주었다.

그럼 이렇게 자연스럽게 바뀐다. 사실 이렇게 바로 될 지 몰랐는데 그냥 해보니까 됐다. Additive Animation은 기본 모션에 애니메이션을 더하는 방식이기 때문에, 기존에 사용하는 조합 외의 다른 애니메이션에 더하는 경우 이상한 결과가 나올 수도 있다고 한다. Base Pose와 유사한 Additive Animation을 사용하자!

방금전에 기획서에서 발견했는데, 방향에 따른 점프 애니메이션이 존재한다..! 점프로 블렌드 스페이스로 방향에 따라 전환되게 만들어줘야 한다. 방향에 따른 애니메이션이 없으므로, 우선은 속도에 따른 애니메이션 전환만 넣어두고 마무리했다.

0개의 댓글