[UE5] #1 - Player-1 | Basic Settings

qweasfjbv·2024년 9월 19일

UnrealEngine5

목록 보기
1/8

개요


UE에서 3인칭 게임을 위한 간단한 PlayerCharacter를 만들어 보겠습니다.
우선 기본적인 설정 및 Character를 상속받는 클래스를 만들어 간단한 캐릭터를 만들겠습니다.

구현


우선 GameModeBase, PlayerController, Character를 상속받는 클래스를 만들고 전부 BP로 만듭니다.

그 후에 월드세팅과 프로젝트 세팅에서 직접 만든 GameMode, Controller, Character 로 세팅해줍니다.

이제 기본적인 세팅이 끝났습니다. Character 스크립트를 수정하여 저희가 조종할 캐릭터를 만들겠습니다.


PlayerCharacter

우선, 저는 다양한 직업을 구현하기 위해 PlayerBaseCharacter과 해당 캐릭터를 상속받는 PlayerGunnerCharacter 를 따로 만들었습니다.

아래 내용은 PlayerBaseCharacter 클래스입니다.

/** HeaderFile **/

public:
	APlayerBaseCharacter();

private:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera", meta = (AllowPrivateAccess = "true"))
	class USpringArmComponent* CameraBoom;

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Camera", meta=(AllowPrivateAccess="true"))
	class UCameraComponent* FollowCamera;


/** Cpp File **/

APlayerBaseCharacter::APlayerBaseCharacter()
{
	PrimaryActorTick.bCanEverTick = false;
	PrimaryActorTick.bStartWithTickEnabled = false;

	bUseControllerRotationPitch = false;
	bUseControllerRotationRoll = false;
	bUseControllerRotationYaw = false;
    
	GetCapsuleComponent()->InitCapsuleSize(42.f, 96.f);

	/* Spring Arm Component */
	CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
	CameraBoom->SetupAttachment(GetRootComponent());
	CameraBoom->TargetArmLength = 420.f;
	CameraBoom->SocketOffset = FVector(0.f, 60.f, 100.f);
	CameraBoom->bUsePawnControlRotation = true;

	/* Camera Component */
	FollowCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
	FollowCamera->SetupAttachment(CameraBoom);
	FollowCamera->bUsePawnControlRotation = false;

	/* Character Movement Component */
	GetCharacterMovement()->bOrientRotationToMovement = true;
	GetCharacterMovement()->RotationRate = FRotator(0.f, 800.f, 0.f);
	GetCharacterMovement()->MaxWalkSpeed = 500.f;
	GetCharacterMovement()->BrakingDecelerationWalking = 2000.f;
}

Tick Variables : 해당 클래스의 Tick 함수 사용여부. 사용하지 않으면 성능향상
bUseControllerRotation : true 면 카메라의 이동에 따라 플레이어가 회전

CameraBoom->SocketOffset : 카메라의 끝 에서 추가적인 소켓 이동.
bUsePawnControlRotation : true 면 마우스의 회전값이 플레이어 이동에 영향을 준다.

bOrientRotationToMovement : true 면 이동하는 방향으로 캐릭터가 회전한다.


여기까지 작성하고 Blueprint에서 확인해보겠습니다.

CameraBoom의 SocketOffset에 의해 살짝 오른쪽으로 기운 모습을 볼 수 있습니다.

위 처럼 원하는 스켈레탈 메시 에셋을 넣고 위치, 회전 및 CapsuleComponent의 크기를 적절하게 조절합니다.

그 후에 실행하면 PlayerStart 에서 저희가 방금 만든 캐릭터가 맵에 나오는 것을 확인할 수 있습니다.
하지만 저희가 입력 처리를 하지 않았기 때문에 움직이지는 않습니다.
다음에는 입력을 받고 움직여보도록 하겠습니다.

마무리

해당 프로젝트는 Udemy의 강의를 참고/수정하여 만드는 중입니다.
더 자세하고 정확한 설명을 위해서는 아래 링크의 강의를 참고하시기 바랍니다.

Unity만 사용하다가 UE5를 처음 사용하다보니 미숙한 부분이 많습니다.
좀 더 나은 방법이 있다면 말씀해주세요.
감사합니다.

참고자료

https://www.udemy.com/course/unreal-engine-5-advanced-action-rpg/learn/lecture/41746600#overview

0개의 댓글