All is well

[UE5/TPS/Proto02] Player 생성 / Camera 셋팅 본문

UE/TPS

[UE5/TPS/Proto02] Player 생성 / Camera 셋팅

D0YUN 2025. 2. 9. 22:44

Player - class 생성 후 Skeletal Mesh 추가

// TPSPlayer.cpp

ATPSPlayer::ATPSPlayer()
{
	PrimaryActorTick.bCanEverTick = true;

	/***** Mesh에 퀸을 넣고 싶다 - 250203 *****/
	ConstructorHelpers::FObjectFinder<USkeletalMesh> skeletal( TEXT("/Script/Engine.SkeletalMesh'/Game/Characters/Mannequin_UE4/Meshes/SK_Mannequin.SK_Mannequin'") );

	// 만약 파일 읽기를 성공했다면
	if (skeletal.Succeeded())
	{
		// 로드한 메시에 Skeletal Mesh를 넣어주고 싶다
		GetMesh()->SetSkeletalMesh( skeletal.Object );

		// 위치값과 회전값을 반영해주고 싶다
		GetMesh()->SetRelativeLocationAndRotation( FVector(0,0,-90.f), FRotator(0,-90.f,0) );
	}

}
  1. Character를 상속받는 TPSPlayer class 생성
  2. Skeletal Mesh 추가
    • Skeletal Mesh 경로 가져와서 추가
    • Skeletal Mesh의 Location, Rotation 조정

Player - Camera 추가

// TPSPlayer.h

(...)

UCLASS()
class TPSPROJECT_API ATPSPlayer : public ACharacter
{
	GENERATED_BODY()

	(...)
    
	/***** Camera - 250203 *****/
public:
    UPROPERTY( EditDefaultsOnly , Category = "Camera" )
	class USpringArmComponent* SpringArmComp;
	UPROPERTY( VisibleAnywhere, BlueprintReadOnly , Category = "Camera" )
	class UCameraComponent* TPSCamComp;
};
  1. Spring Arm COMP
    1. `TPSPlayer.h`에 Spring Arm COMP 변수 추가
    2. `TPSPlayer.cpp`에 Spring Arm COMP 생성
    3. `Root COMP` 하위에 Attach
    4. Location 설정
    5. Target Arm Length 설정
  2. Camera COMP
    1. `TPSPlayer.h`에 Camera COMP 변수 추가
    2. `TPSPlayer.cpp`에 Camera COMP 생성
    3. Spring Arm COMP의 하위에 Attach

Player - Camera Rotation 설정

< BP >

  1. BP_TPSPlayer로 이동 → Spring Arm 선택 → Use Pawn Control Rotation 체크
    • Spring Arm이 캐릭터의 회전값과 동일하게 회전한다
  2. BP_TPSPlayer로 이동 → Camera 선택 → Use Pawn Control Rotation 체크 해제
  3. BP_TPSPlayer 선택 → Use Controller Rotation Yaw만 체크

< CPP >

// TPSPlayer.cpp

ATPSPlayer::ATPSPlayer()
{
	PrimaryActorTick.bCanEverTick = true;

	(...)

	/***** TPS 카메라를 붙이고 싶다 - 250203 *****/
	// SpringArm COMP 추가
	SpringArmComp = CreateDefaultSubobject<USpringArmComponent>( TEXT("SpringArmComp") );
	SpringArmComp->SetupAttachment( RootComponent );
	SpringArmComp->SetRelativeLocation( FVector(0, 60.f, 80.f) );
	SpringArmComp->TargetArmLength = 300.f;
	SpringArmComp->bUsePawnControlRotation = true;		// 250204

	// Camera COMP 추가
	TPSCamComp = CreateDefaultSubobject<UCameraComponent>( L"CameraComp" );
	TPSCamComp->SetupAttachment( SpringArmComp );
	TPSCamComp->bUsePawnControlRotation = false;		// 250204

	/***** Camera Rotation 설정 - 250204 *****/
	bUseControllerRotationYaw = true;
	bUseControllerRotationRoll = false;
	bUseControllerRotationPitch = false;
}
  1. `SpringArmComp`의 `bUsePawnControlRotation`을 true로
  2. `TPSCamComp`의  `bUsePawnControlRotation`을 false로
  3. `bUseControllerRotationYaw`만 true로 설정하고 나머지 `bUseControllerRotationPitch`, `bUseControllerRotationRoll` 는 false로

 

 

 

 

'UE > TPS' 카테고리의 다른 글

[UE5/TPS/Proto04] Bullet 구현  (0) 2025.02.12
[UE5/TPS/Proto03] Player Input Binding  (0) 2025.02.10
[UE5/TPS/Proto01] Project File 생성 / Custom log 생성  (0) 2025.02.08