< [UE5 FPS 프로젝트] 6. ADS(조준) 시스템

언리얼엔진5/FPS 게임 1인 프로젝트

[UE5 FPS 프로젝트] 6. ADS(조준) 시스템

Rocketbabydolls 2024. 6. 18. 14:21

 

 

ADS(Aim Down Sight, 조준) 시스템

 

    Timeline 을 이용해서 ADS 시스템을 만들었습니다. 동작 원리는 간단한게 우클릭 시 FOV 를 조정해주고,메쉬를 중앙에 이동시킨 뒤, 팔에 알맞은 애니메이션을 재생해 주면 됩니다.

 

void AVICharacter::ADSTimeLineFunc(float value)
{
	D("TimeLine")
	if (bEquippedWeapon)  // AK47
	{
		GetCamera()->SetFieldOfView(FMath::Lerp(90.0f, 45.0f, value));
		FirstPersonMesh->SetRelativeLocation(FMath::Lerp(FVector(1.6f, 7.8f, -23.6f), FVector(1.6f, 0.0f, -16.5f), value));
		FirstPersonMesh->SetRelativeRotation(FRotator(0.0f, -1.0f, 0.0f));

	}
	else  // Glock
	{
		GetCamera()->SetFieldOfView(FMath::Lerp(90.0f, 45.0f, value));
		FirstPersonMesh->SetRelativeLocation(FMath::Lerp(FVector(1.6f, 7.8f, -23.6f), FVector(1.6f, 0.0f, -16.0f), value));
		FirstPersonMesh->SetRelativeRotation(FRotator(0.0f, -1.0f, 0.0f));

	}
}

 

 

    Lerp 보간 함수를 통해 0.15초 동안 실행되는 Timeline 을 타고 transfrom 이 일어나도록 하였습니다. 따라서 알파 값(value) 에 따라 부드럽게 실행되는 걸 볼 수 있습니다. 무기마다 정 중앙에 위치하기 위한 높이 및 위치가 달라 분기해 주었습니다.

    C++ 에서의 Timeline 구현에 대한 내용은 아래 게시글에 정리해 두었습니다.

 

 

 

AnimGraph 에서는 알맞게 애니메이션이 재생되도록 blend 해 주었습니다.

 

불리언을 통해 블렌딩 되는 모습.

 

 

 

ConstructorHelpers

 

 

     이미 하드코딩이 심한 관계로  몽타주 애니메이션들은 블루프린트에서 지정 해 주었습니다.

 

에셋 지정

 

 

 

 

실행 영상

 

 

 

레퍼런스

 

[Unreal Engine 4] Timeline을 이용하여 부드럽게 앉기 구현 (Smooth Crouching)

기본적인 Crouch() 함수를 사용해 캐릭터의 앉는 기능을 구현하면 부자연스럽게 뚝뚝 끊어져 보이는 것처럼 앉게 된다. 3인칭이나 사이드뷰같은 경우 SpringArm의 CameraLag을 통해 부드러운 앉기를 구

sheep-adult.tistory.com