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 해 주었습니다.
이미 하드코딩이 심한 관계로 몽타주 애니메이션들은 블루프린트에서 지정 해 주었습니다.
실행 영상
레퍼런스
[Unreal Engine 4] Timeline을 이용하여 부드럽게 앉기 구현 (Smooth Crouching)
기본적인 Crouch() 함수를 사용해 캐릭터의 앉는 기능을 구현하면 부자연스럽게 뚝뚝 끊어져 보이는 것처럼 앉게 된다. 3인칭이나 사이드뷰같은 경우 SpringArm의 CameraLag을 통해 부드러운 앉기를 구
sheep-adult.tistory.com
'언리얼엔진5 > FPS 게임 1인 프로젝트' 카테고리의 다른 글
[UE5 FPS 프로젝트] 5. 총 추가 구현 및 Swap (0) | 2024.06.17 |
---|---|
[UE5 FPS 프로젝트] 4. 총알 궤적, 총구 화염, 총알 자국, 탄퍼짐 구현 (0) | 2024.06.14 |
[UE5 FPS 프로젝트] 3. HUD 및 피격 구현 (0) | 2024.06.13 |
[UE5 FPS 프로젝트] 2. 발사 및 재장전 구현 (0) | 2024.06.13 |
[UE5 FPS 프로젝트] 1. 1인칭 구현 및 무기 부착 (0) | 2024.06.12 |