👨💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.
언리얼 엔진에서 USpringArmComponent 는 무엇이며, 어떻게 활용해야 하는지 간략히 알아보았습니다.
질문 >
언리얼 엔진에서 USpringArmComponent 는 무엇이며, 어떻게 활용해야 하나요?
답변 >
언리얼 엔진에서 **USpringArmComponent**는 주로 카메라의 위치와 회전을 제어하여 캐릭터와의 일정한 거리를 유지하고 부드러운 추적을 가능하게 하는 컴포넌트입니다. 스프링 암(Spring Arm)은 주로 3인칭 카메라 설정에 사용되며, 캐릭터가 움직일 때 카메라가 부드럽게 따라다니면서 장애물이 있을 경우 자동으로 거리를 조정해줍니다.
USpringArmComponent의 주요 기능
- 카메라 거리 제어:
- USpringArmComponent는 TargetArmLength 속성을 사용하여 카메라와 대상 사이의 기본 거리를 설정합니다. 이 값을 통해 카메라가 캐릭터로부터 얼마나 떨어져 있을지를 제어할 수 있습니다.
- 부드러운 추적:
- 스프링 암에는 카메라 움직임에 반응하는 스프링(탄성) 효과가 있어, 캐릭터가 빠르게 이동하거나 회전할 때 카메라가 부드럽게 따라오도록 합니다. 이로 인해 플레이어는 캐릭터의 시야를 안정적으로 확보할 수 있습니다.
- bEnableCameraLag와 bEnableCameraRotationLag 옵션을 통해 카메라의 위치와 회전이 지연되는 효과를 추가하여 더욱 부드러운 움직임을 구현할 수 있습니다.
- 충돌 감지 및 거리 조정:
- USpringArmComponent는 장애물 충돌을 감지하고, 충돌이 발생하면 카메라와 캐릭터 간의 거리를 자동으로 줄여 카메라 시야가 가려지지 않도록 조정합니다. 이 기능은 3D 환경에서 카메라가 벽이나 다른 장애물에 가려지는 것을 방지하는 데 유용합니다.
- 회전 제어:
- 스프링 암을 통해 카메라가 캐릭터를 중심으로 회전할 수 있도록 설정할 수 있습니다. 기본적으로 스프링 암은 대상의 회전을 따라가지만, bUsePawnControlRotation 옵션을 활성화하면 플레이어의 컨트롤 입력에 따라 카메라 회전이 반영됩니다.
USpringArmComponent 활용 방법
1. Spring Arm 추가 및 설정
먼저, USpringArmComponent를 캐릭터에 추가하고 설정합니다. 보통 캐릭터 클래스에서 스프링 암을 생성하고, 카메라 컴포넌트를 스프링 암에 연결하여 사용합니다.
// 헤더 파일
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera")
USpringArmComponent* SpringArm;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera")
UCameraComponent* Camera;
// 생성자
AMyCharacter::AMyCharacter()
{
// 스프링 암 생성 및 초기화
SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
SpringArm->SetupAttachment(RootComponent);
SpringArm->TargetArmLength = 300.0f; // 카메라와의 거리 설정
SpringArm->bUsePawnControlRotation = true; // 플레이어 컨트롤러의 회전을 따름
// 카메라 생성 및 스프링 암에 부착
Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
Camera->SetupAttachment(SpringArm, USpringArmComponent::SocketName);
Camera->bUsePawnControlRotation = false; // 카메라는 회전하지 않음
}
2. 카메라 이동 및 회전 지연 설정
스프링 암의 지연 효과를 활용하여 카메라가 부드럽게 캐릭터를 따라다니도록 할 수 있습니다.
SpringArm->bEnableCameraLag = true;
SpringArm->CameraLagSpeed = 3.0f; // 이동 지연 속도 설정
SpringArm->bEnableCameraRotationLag = true;
SpringArm->CameraRotationLagSpeed = 5.0f; // 회전 지연 속도 설정
이 설정을 통해 캐릭터가 이동할 때 카메라가 뒤늦게 따라가며, 부드러운 카메라 추적 효과를 구현할 수 있습니다.
3. 충돌 감지 활성화
스프링 암의 충돌 감지를 활성화하여 장애물이 있을 때 카메라가 자동으로 거리를 조정하도록 합니다.
SpringArm->bDoCollisionTest = true; // 충돌 감지 활성화
이렇게 설정하면 캐릭터와 카메라 사이에 벽이나 물체가 가로막히면 카메라가 자동으로 캐릭터에 가까이 이동하여 시야를 확보합니다.
활용 예시: 3인칭 카메라 시스템 구현
USpringArmComponent를 사용하면 간단히 3인칭 카메라 시스템을 구현할 수 있습니다. 스프링 암은 캐릭터와 일정한 거리를 유지하면서, 부드러운 이동 및 회전 지연을 제공하며, 충돌 감지 기능을 통해 시야가 가려지지 않도록 합니다.
요약
**USpringArmComponent**는 캐릭터와 카메라 사이의 거리를 제어하고, 카메라가 부드럽게 따라다니도록 지원하는 매우 유용한 컴포넌트입니다. 이를 통해 플레이어는 시야를 확보하면서도 부드러운 카메라 움직임을 경험할 수 있어, 특히 3인칭 액션 게임이나 어드벤처 게임에서 자주 사용됩니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
🎬 유튜브 채널 🎬
🎬 치지직 채널 🎬
'프로그래밍' 카테고리의 다른 글
👨💻 [Flutter] Flutter 에서 StatelessWidget 은 무엇인가요? (3) | 2024.11.15 |
---|---|
👨💻 [Unreal] 언리얼 엔진에서 C++ 생성자의 목적은 무엇인가요? (5) | 2024.11.14 |
👨💻 [Unreal] 언리얼 엔진에서 나나이트(Nanite)를 활용하려면 어떻게 해야하나요? (3) | 2024.11.06 |
👨💻 [Unreal] 언리얼 엔진 5 에서 C++ 의 문자열은 TEXT 매크로를 사용할 것을 권장하는데, 이유가 무엇인가요? (2) | 2024.11.04 |
👨💻 [Unreal] 언리얼 엔진 5 에서 C++ 의 string 은 FString 을 사용할 것을 권장하는데, 이유가 무엇인가요? (3) | 2024.11.04 |