728x90
이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다.

 

목차.

  1. SpringArm 컴포넌트, Camera 컴포넌트 추가 및 생성
  2. SpringArm 설정
  3. 마우스로 카메라 움직임 추가

 

SpringArm 컴포넌트, Camera 컴포넌트 추가 및 생성

 

캐릭터를 타켓으로 카메라를 설정해야 하기 때문에 캐릭터 클래스에 카메라 컴포넌트를 추가하겠습니다.

 

ChacacterClass.h

class TESTUNREALENGINE_API AMyCharacter : public ACharacter
{
....
private:
    UPROPERTY(VisibleAnywhere);
    USpringArmComponent* SpringArm;

    UPROPERTY(VisibleAnywhere);
    UCameraComponent* Camera;
....
}

 

그러면 사진과 같이 컴포넌트가 정의되어 있지 않다면서 에러가 발생할 것입니다.

 

SpringArm, Camera 컴포넌트 에러 발생

 

이를 해결하기 위해 두 컴포넌트를 모두 전방선언 해줍니다.

전방선언
  • 식별자를 정의하기 전 식별자의 존재를 컴파일러에게 미리 알림
  • 컴파일 시간을 단축시켜 주고 헤더 포함 의존성을 줄여줌
  • 포인터 객체만 사용이 가능합니다.

 

UPROPERTY(VisibleAnywhere);
class USpringArmComponent* SpringArm; //전방선언

UPROPERTY(VisibleAnywhere);
class UCameraComponent* Camera; //전방선언

 

전방 선언을 한 뒤, cpp 클래스에 헤더 파일을 추가합니다.

.cpp

#include "GameFramework/SpringArmComponent.h"
#include "Camera/CameraComponent.h"
#include "Components/CapsuleComponent.h" //나중에 사용할것임 미리 추가

 

그리고 생성자에서 컴포넌트를 생성하는 코드를 작성합니다.

 

AMyCharacter::AMyCharacter()
{
	SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SPRINGARM"));
	Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("CAMERA"));

	SpringArm->SetupAttachment(GetCapsuleComponent()); 
	Camera->SetupAttachment(SpringArm);
}

 

SparingArm을 Capsule 컴포넌트에, 그리고 Camera를 SpringArm에 Attachment 시켜주었습니다.

 

계층 구조 설정

 

 

SpringArm 설정

 

컴포넌트를 생성해 주었으니 카메라 세부 설정을 해주겠습니다.

 

마찬가지로 생성자에 코드를 추가해 주면 됩니다.

 

	SpringArm->TargetArmLength = 500.0f;
	SpringArm->SetRelativeRotation(FRotator(-35.0f,0.f, 0.f));

	GetMesh()->SetRelativeLocationAndRotation(
		FVector(0.f, 0.f, -88.f), FRotator(0.f, -90.f, 0.f));

 

컴파일 후 게임을 실행하면

 

카메라 설정 완료된 모습

 

카메라도 적당히 뒤에서 바라보는 것을 볼 수 있고,

 

디테일 값 설정

 

설정도 잘 된 것을 확인할 수 있습니다.

 

 

마우스로 카메라 움직임 추가

 

마지막으로 마우스를 움직이면 카메라가 좌, 우로 움직이는 것을 구현해 보겠습니다.

 

.h

class TESTUNREALENGINE_API AMyCharacter : public ACharacter
{
public:
....
    void Yaw(float Value);
....
}

 

.cpp

void AMyCharacter::Yaw(float Value)
{
	AddControllerYawInput(Value);
}

 

코드가 정말 별거 없는데 언리얼에서 이미 구조를 잘 짜두었기 때문입니다.

 

이제 언리얼 에디터로 돌아와서 추가로 바인딩을 해주어야 합니다.

세팅 -> 프로젝트 세팅 -> 입력 -> 바인딩 -> 축 매핑에서 Yaw(마우스 x축)

마우스 Yaw 입력 추가

 

이제 게임을 실행하면 화면이 잘 움직입니다.

 

카메라가 잘 돌아가는 모습

728x90

+ Recent posts