1일1알

UE5로 만드는 Team Fortress 2 닷지볼 - 애니메이션 적용 본문

언리얼/TF2 Dodgeball 모작

UE5로 만드는 Team Fortress 2 닷지볼 - 애니메이션 적용

영춘권의달인 2024. 4. 6. 21:07
// Header
UPROPERTY(BlueprintReadOnly)
float GroundSpeed = 0.f;

// Cpp
void UDBAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
	Velocity = MovementComponent->Velocity;
	GroundSpeed = Velocity.Size2D();
}

 

AnimInstance 클래스를 상속받은 DBAnimInstance Class를 생성, 애니메이션 재생에 필요한 정보들을 정의해서 프레임마다 NativeUpdateAnimation 함수를 통해 정보들을 갱신한다. 예를들어 Speed를 정의하고, Character Movement 컴포넌트의 Velocity를 이용하여 Speed를 얻은 후 갱신해준다.

 

 

AnimInstance를 이용해 Animation Blueprint를 만들 수 있고, 매 프레임마다 갱신해준 애니메이션에 필요한 정보들을 이용해서 상황에 맞는 애니메이션을 틀도록 설계할 수 있다.

 

 

움직일때 앞, 뒤, 오른쪽, 옆으로 이동하는 애니메이션이 각각 있어서 이것을 Blend State를 이용하여 설계하였다. Horizontal Axis와 Vertical Axis의 최솟값, 최대값을 -1, 1로 하고 AnimInstance에서 키보드 입력을 저장하여 W를 누르면 앞, A를 누르면 왼쪽으로 가는 애니메이션이 재생되도록 설계하였다.

 

나머지 움직이거나 점프하는 부분은 기본 3인칭 템플릿을 참고하여서 만들었다.

 

움직이는 애니메이션이 제자리에서 움직이는게 아니라 실제로 움직여서 Root Motion을 사용해 제자리에서 움직이도록 바꾼 뒤 사용했는데 Root Bone이 발바닥이 아닌 엉덩이쪽에 있어서 뒤뚱뒤뚱거리면서 부자연스럽게 이동한다.

Blender에서 Root Bone을 발바닥에 추가할 수 있는 방법이 있다고 해서 시도해봤지만 잘 되지 않았다.

좀더 찾아보고 고쳐야할듯ㅠㅠ