Unreal

[Unreal5] 캐릭터 회전

usingsystem 2024. 6. 11. 15:16
728x90

Character

Use Controller Desired Rotation

이 옵션이 활성화되면, 캐릭터는 컨트롤러의 회전값을 따르게 됩니다. 즉, 컨트롤러가 바라보는 방향으로 캐릭터가 회전합니다.

  • 용도: 주로 FPS(First-Person Shooter) 게임이나, 컨트롤러가 캐릭터의 시점을 직접 제어하는 게임에서 사용됩니다.
  • 특징:
    • 컨트롤러의 회전 값(Yaw)을 캐릭터에 직접 반영합니다.
    • 캐릭터가 이동할 때 항상 컨트롤러가 바라보는 방향을 유지합니다.
    • 주로 마우스나 조이스틱의 방향으로 캐릭터가 회전하는 경우에 유용합니다.

Orient Rotation to Movement

이 옵션이 활성화되면, 캐릭터는 이동 방향에 따라 회전합니다. 즉, 캐릭터가 움직이는 방향으로 회전하게 됩니다.

  • 용도: 주로 TPS(Third-Person Shooter) 게임이나, 이동 방향에 따라 자연스럽게 회전하는 것이 중요한 게임에서 사용됩니다.
  • 특징:
    • 캐릭터가 이동할 때의 방향을 기반으로 회전합니다.
    • 이동하지 않을 때는 기존의 회전을 유지합니다.
    • 캐릭터가 이동하는 동안 이동 방향으로 서서히 회전하게 됩니다.

두 옵션을 함께 사용

이 두 옵션은 서로 배타적이지 않으며, 특정 게임플레이 요구 사항에 따라 함께 사용될 수도 있습니다.

  • Use Controller Desired Rotation을 켜고 Orient Rotation to Movement를 끄면, 캐릭터는 항상 컨트롤러가 바라보는 방향을 유지합니다.
  • Orient Rotation to Movement를 켜고 Use Controller Desired Rotation를 끄면, 캐릭터는 이동 방향에 따라 회전합니다.
  • 두 옵션을 모두 켜면, 이동 중에는 이동 방향에 따라 회전하고, 이동을 멈추면 컨트롤러의 회전 방향을 따르게 설정할 수도 있습니다.
// 캐릭터 클래스의 생성자에서 초기 설정
AYourCharacter::AYourCharacter()
{
    // 캐릭터 이동 컴포넌트 가져오기
    CharacterMovement = GetCharacterMovement();

    // 컨트롤러의 회전값을 사용할지 설정
    CharacterMovement->bUseControllerDesiredRotation = true;

    // 이동 방향에 따라 회전할지 설정
    CharacterMovement->bOrientRotationToMovement = true;

    // 회전 속도 설정
    CharacterMovement->RotationRate = FRotator(0.f, 540.f, 0.f);
}

Spring Arm

Spring Arm이 소유하고 있는 Pawn의 컨트롤러 회전을 따르도록 설정하는 옵션입니다. 이 옵션을 사용하면 Spring Arm과 그에 붙어있는 카메라가 Pawn의 컨트롤러 회전에 따라 회전하게 됩니다.

Use Pawn Control Rotation의 역할과 동작

  • 기능: Spring Arm이 Pawn의 컨트롤러 회전을 따라가도록 합니다.
  • 효과: 카메라가 Pawn의 시점 변화에 따라 움직이게 됩니다.

이 옵션을 사용하면 캐릭터를 조작할 때, 카메라가 캐릭터의 회전 방향을 따라가도록 만들 수 있습니다. 이는 특히 TPS(Third-Person Shooter) 게임이나, 캐릭터의 뒤를 따라다니는 카메라를 구현할 때 유용합니다.

사용 예시

Spring Arm의 Use Pawn Control Rotation 옵션을 설정하는 방법은 다음과 같습니다.

  1. Spring Arm 컴포넌트 생성 및 설정:
    • Spring Arm 컴포넌트를 캐릭터 블루프린트 또는 C++ 클래스에 추가합니다.
    • Spring Arm 컴포넌트의 Use Pawn Control Rotation 옵션을 활성화합니다.
// 캐릭터 클래스의 생성자에서 Spring Arm 설정
AYourCharacter::AYourCharacter()
{
    // Spring Arm 컴포넌트 생성
    SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
    SpringArm->SetupAttachment(RootComponent);

    // Spring Arm 길이 설정
    SpringArm->TargetArmLength = 300.0f;

    // Pawn의 컨트롤러 회전을 사용할지 설정
    SpringArm->bUsePawnControlRotation = true;

    // Spring Arm의 회전하지 않도록 설정 (선택 사항)
    SpringArm->bInheritPitch = false;
    SpringArm->bInheritYaw = false;
    SpringArm->bInheritRoll = false;

    // 카메라 컴포넌트 생성 및 Spring Arm에 첨부
    Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
    Camera->SetupAttachment(SpringArm, USpringArmComponent::SocketName);
    Camera->bUsePawnControlRotation = false; // 카메라 자체는 회전하지 않도록 설정
}

// 캐릭터 클래스의 Tick 함수에서 카메라 설정 업데이트
void AYourCharacter::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

    // 필요한 경우 추가적인 카메라 로직 구현
}

Camera

UsePawnControlRotation은 카메라가 Pawn의 컨트롤러 회전을 따라가도록 설정하는 옵션입니다. 이 옵션을 설정하면, Pawn이 회전할 때 카메라도 함께 회전하여 플레이어의 시점이 변경됩니다.

bUsePawnControlRotation의 역할과 동작

  • 기능: 카메라가 Pawn의 컨트롤러 회전을 따라가도록 합니다.
  • 효과: 카메라가 Pawn의 시점 변화에 따라 움직이게 됩니다.

이 옵션은 특히 1인칭(FPS) 또는 3인칭(TPS) 게임에서 유용합니다. 이를 통해 플레이어가 캐릭터의 방향을 변경할 때, 카메라도 함께 회전하여 시점이 자연스럽게 변화합니다.

사용 예시

  1. Spring Arm과 카메라 설정:
    • Spring Arm을 사용하여 카메라를 캐릭터에 부착할 수 있습니다.
    • Spring Arm과 카메라 모두 bUsePawnControlRotation 옵션을 사용할 수 있습니다.
// 캐릭터 클래스의 생성자에서 카메라 설정
AYourCharacter::AYourCharacter()
{
    // Spring Arm 컴포넌트 생성
    SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
    SpringArm->SetupAttachment(RootComponent);

    // 카메라 컴포넌트 생성
    Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
    Camera->SetupAttachment(SpringArm);

    // Spring Arm 설정
    SpringArm->TargetArmLength = 300.0f;
    SpringArm->bUsePawnControlRotation = true; // Spring Arm이 컨트롤러 회전을 따르도록 설정

    // 카메라 설정
    Camera->bUsePawnControlRotation = false; // 카메라는 Spring Arm을 통해 회전
}

// 캐릭터 클래스의 Tick 함수에서 카메라 설정 업데이트
void AYourCharacter::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

    // 필요한 경우 추가적인 카메라 로직 구현
}

Character Movement

Rotation Rate

Rotation Rate는 캐릭터가 회전할 때의 속도를 정의합니다. 이는 초당 회전 각도(degrees per second)로 설정됩니다.

  • X: Pitch 회전 속도 (캐릭터가 위아래로 고개를 드는 속도)
  • Y: Roll 회전 속도 (캐릭터가 좌우로 기울어지는 속도)
  • Z: Yaw 회전 속도 (캐릭터가 좌우로 회전하는 속도)

이미지에서 X와 Y는 0.0으로 설정되어 있고, Z는 360.0으로 설정되어 있습니다. 이는 캐릭터가 초당 360도까지 Yaw 방향으로 회전할 수 있다는 것을 의미합니다.

Use Controller Desired Rotation

Use Controller Desired Rotation 옵션은 캐릭터가 컨트롤러의 회전값을 따를지 여부를 결정합니다. 이 옵션이 활성화되면, 캐릭터는 컨트롤러의 회전 방향을 따라 회전하게 됩니다.

  • 비활성화 상태: 이미지에서 이 옵션은 비활성화 상태입니다. 따라서 캐릭터는 컨트롤러의 회전값을 따르지 않습니다.

Orient Rotation to Movement

Orient Rotation to Movement 옵션은 캐릭터가 이동 방향에 따라 회전할지 여부를 결정합니다. 이 옵션이 활성화되면, 캐릭터는 이동하는 방향으로 회전합니다.

  • 비활성화 상태: 이미지에서 이 옵션은 비활성화 상태입니다. 따라서 캐릭터는 이동 방향에 따라 자동으로 회전하지 않습니다.
728x90