Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- C++
- 개발
- 프로그래밍
- 언리얼
- fstring
- 게임프로그래밍
- 백준
- 구조체포인터
- 링크드리스트
- 개발자
- c++자료구조
- 내가해냄
- 얌얌코딩
- 재귀함수
- 연산자오버로딩
- 미라클모닝
- 구조체
- 언리얼로그
- 코딩
- 오늘의에러
- dfs
- 커스텀로그
- 탐색기법
- unreal
- 게임개발
- 자료구조
- UE5
- TPS
- permutation
- 코딩테스트
Archives
- Today
- Total
All is well
[UE5/TPS/Proto02] Player 생성 / Camera 셋팅 본문
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) );
}
}
- Character를 상속받는 TPSPlayer class 생성
- 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;
};
- Spring Arm COMP
- `TPSPlayer.h`에 Spring Arm COMP 변수 추가
- `TPSPlayer.cpp`에 Spring Arm COMP 생성
- `Root COMP` 하위에 Attach
- Location 설정
- Target Arm Length 설정
- Camera COMP
- `TPSPlayer.h`에 Camera COMP 변수 추가
- `TPSPlayer.cpp`에 Camera COMP 생성
- Spring Arm COMP의 하위에 Attach
Player - Camera Rotation 설정
< BP >
- BP_TPSPlayer로 이동 → Spring Arm 선택 → Use Pawn Control Rotation 체크
- Spring Arm이 캐릭터의 회전값과 동일하게 회전한다

- Spring Arm이 캐릭터의 회전값과 동일하게 회전한다
- BP_TPSPlayer로 이동 → Camera 선택 → Use Pawn Control Rotation 체크 해제
- 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;
}
- `SpringArmComp`의 `bUsePawnControlRotation`을 true로
- `TPSCamComp`의 `bUsePawnControlRotation`을 false로
- `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 |