- 간단한 플레이어 캐릭터를 C++로 생성하기
- SkeletalMesh, SpringArm, Camera 추가하기
- GameMode에서 DefaultPawnClass 설정하기
MMPlayerCharacter Class
- 간단히 SkeletalMesh와 SpringArm, Camera만 추가하여 확인해보도록 하겠습니다.
// MMPlayerCharacter Header
public:
AMMPlayerCharacter();
protected:
// 셀카봉 역할을 해줄 컴포넌트
UPROPERTY(VisibleAnywhere, Category = Camera, Meta = (AllowPrivateAccess = "true"))
TObjectPtr<class USpringArmComponent> SpringArm;
// 실제 촬영을 위한 컴포넌트
UPROPERTY(VisibleAnywhere, Category = Camera, Meta = (AllowPrivateAccess = "true"))
TObjectPtr<class UCameraComponent> Camera;
생성자 함수에서 에디터로부터 애셋을 불러오고, 컴포넌트들을 연결해 줍니다.
// MMPlayerCharacter Cpp
#include "Character/MMPlayerCharacter.h"
#include "Components/CapsuleComponent.h"
#include "Camera/CameraComponent.h"
#include "GameFramework/SpringArmComponent.h"
AMMPlayerCharacter::AMMPlayerCharacter()
{
// Collision 설정
{
GetCapsuleComponent()->InitCapsuleSize(35.0f, 90.0f);
}
// Mesh 설정
{
// Load
static ConstructorHelpers::FObjectFinder<USkeletalMesh> SkeletalMeshRef(TEXT("/Script/Engine.SkeletalMesh'/Game/Pirate/Mesh_UE5/Full/SKM_Pirate_Full_03.SKM_Pirate_Full_03'"));
if (SkeletalMeshRef.Object)
{
// Mesh 설정
GetMesh()->SetSkeletalMesh(SkeletalMeshRef.Object);
GetMesh()->SetRelativeLocationAndRotation(FVector(0.0f, 0.0f, -90.0f), FRotator(0.0f, -90.0f, 0.0f));
}
}
// Camera 설정
{
SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
SpringArm->SetupAttachment(RootComponent);
Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
Camera->SetupAttachment(SpringArm, USpringArmComponent::SocketName);
}
}
기본적인 캐릭터 제작이 완료되었으므로 해당 클래스를 부모로 하는 블루프린트 클래스를 생성합니다.
실제 레벨에서 사용할 게임모드 클래스를 생성합니다.
MMGameMode Class
- 마을 레벨의 게임 로직을 관리하기 위한 클래스입니다.
- DefaultPawnClass를 위에서 생성한 블루프린트로 지정해주도록 합니다.
// MMGameMode Cpp
#include "Game/MMGameMode.h"
AMMGameMode::AMMGameMode()
{
// DefaultPawn 설정
static ConstructorHelpers::FClassFinder<APawn> PawnClassRef(TEXT("/Script/Engine.Blueprint'/Game/MysticMaze/Player/BP_Player.BP_Player_C'"));
if (PawnClassRef.Succeeded())
{
DefaultPawnClass = PawnClassRef.Class;
}
}
위 클래스를 상속받는 블루프린트 클래스를 생성하고, 레벨에 적용시켜주도록 합니다.
지정한 SkeletalMesh, SpringArm, Camera가 제대로 동작하는 것을 확인할 수 있습니다.