728x90
이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다.
목차.
SpringArm 컴포넌트, Camera 컴포넌트 추가 및 생성
캐릭터를 타켓으로 카메라를 설정해야 하기 때문에 캐릭터 클래스에 카메라 컴포넌트를 추가하겠습니다.
ChacacterClass.h
class TESTUNREALENGINE_API AMyCharacter : public ACharacter
{
....
private:
UPROPERTY(VisibleAnywhere);
USpringArmComponent* SpringArm;
UPROPERTY(VisibleAnywhere);
UCameraComponent* 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축)
이제 게임을 실행하면 화면이 잘 움직입니다.
728x90
'언리얼' 카테고리의 다른 글
[UE4] 언리얼 엔진 기초 : 블루프린트 클래스 사용하기 (0) | 2023.08.21 |
---|---|
[UE4] 언리얼 엔진 : 스타터 콘텐츠(StarterContent) 삭제하기 (0) | 2023.08.19 |
[UE4] 언리얼 엔진 기초 : 클래스에서 Character 생성과 이동 (0) | 2023.08.19 |
[UE4] 언리얼 엔진 기초 : 게임플레이 프레임워크 - GameMode와 Pawn 움직이기 (0) | 2023.08.19 |
[UE4] 언리얼 엔진 기초 : 회전(FRotator) (0) | 2023.08.18 |