SpartaCharacter.h#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "SpartaCharacter.generated.h"
UCLASS()
class CH3CPP_API ASpartaCharacter : public ACharacter
{
GENERATED_BODY()
public:
ASpartaCharacter();
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera")
USpringArmComponent* SpringArmComp;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera")
UCameraComponent* CameraComp;
protected:
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
};
SpartaCharacter.cpp#include "SpartaCharacter.h"
#include "Camera/CameraComponent.h"
#include "GameFramework/SpringArmComponent.h"
ASpartaCharacter::ASpartaCharacter()
{
PrimaryActorTick.bCanEverTick = false;
SpringArmComp = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
SpringArmComp->SetupAttachment(RootComponent);
SpringArmComp->TargetArmLength = 300.0f;
SpringArmComp->bUsePawnControlRotation = true;
CameraComp = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
CameraComp->SetupAttachment(SpringArmComp, USpringArmComponent::SocketName);
CameraComp->bUsePawnControlRotation = false;
}
void ASpartaCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
}
(1) Spring Arm Component 생성
SpringArmComp = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
SpringArm이라는 이름으로 USpringArmComponent 타입의 컴포넌트를 생성해서 SpringArmComp에 저장한다.CreateDefaultSubobject : (2) Spring Arm을 캐릭터에 연결
SpringArmComp->SetupAttachment(RootComponent);
Spring Arm은 Capsule Component를 기준으로 움직이고 회전하게 된다.SetupAttachment: (3) Spring Arm의 거리 설정
SpringArmComp->TargetArmLength = 300.0f;
TargetArmLength:(4) Spring Arm의 Pawn Control Rotation 설정
SpringArmComp->bUsePawnControlRotation = true;
bUsePawnControlRotation = true:bUsePawnControlRotation = false:(5) Camera를 Spring Arm 끝에 연결
CameraComp->SetupAttachment(SpringArmComp, USpringArmComponent::SocketName);
USpringArmComponent::SocketName: Spring Arm 끝에 위치한 소켓 이름이다.GameMode 클래스 생성자에서 기본 캐릭터 클래스를 ASpartaCharacter로 설정한다.
DefaultPawnClass = ASpartaCharacter::StaticClass();