캐릭터 설정
GetMesh()->SetRelativeLocationAndRotation(FVector(0.f, 0.f, -90.f), FRotator(0.f, -90.f, 0.f));
캡슐 컴포넌트와 매쉬의 방향이 맞지 않아서 캐릭터가 다른 곳을 보는 현상과
매쉬와 캡슐 컴포넌트의 높이가 맞지 않아 캐릭터가 공중에 뜨는 현상을 해결하기 위하여
캐릭터의 생성자에 코드를 작성 해 주었습니다.
카메라 설정
이번에는 카메라가 캐릭터의 어깨 뒤를 찍게하기 위해서 스프링암과 팔로우 카메라를 생성하려고 합니다.
스프링암과 팔로우 카메라는 이런 형태로, 스프링암은 캐릭터에 고정되어 있고
팔로우 카메라는 스프링암 끝에 고정되어 있습니다.
// 카메라 컴포넌트
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true"));
class USpringArmComponent* SpringArm;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera, meta = (AllowPrivateAccess = "true"));
class UCameraComponent* FollowCamera;
캐릭터의 헤더파일에 다음과 같은 코드를 입력해서 스프링암과 카메라 컴포넌트를 사용할 준비를 하였습니다.
#include "GameFramework/SpringArmComponent.h"
#include "Camera/CameraComponent.h"
또한 위와 같은 헤더를 include 해줘야 스프링암과 카메라 컴포넌트를 사용할 수 있습니다.
// 컨트롤러 회전에 캐릭터를 회전하지 않음. 컨트롤러 회전은 카메라만 회전
bUseControllerRotationPitch = false;
bUseControllerRotationRoll = false;
bUseControllerRotationYaw = false;
SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
SpringArm->SetupAttachment(RootComponent);
SpringArm->TargetArmLength = 1000.f;
SpringArm->bUsePawnControlRotation = true;
FollowCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
FollowCamera->SetupAttachment(SpringArm, USpringArmComponent::SocketName);
FollowCamera->bUsePawnControlRotation = false;
이후 캐릭터의 CPP 파일에 다음과 같은 코드를 입력하여 마우스로 화면전환을 할 때 캐릭터가 같이 회전하지 않게 하고,
스프링암을 캐릭터에 부착하고 카메라암의 길이, 컨트롤러의 입력에 따른 회전 여부를 설정하였습니다.
팔로우 카메라는 스프링암 끝부분에 부착하였고 스프링암의 회전을 따라가기만 하면 되기 때문에
팔로우 카메라는 컨트롤러의 회전을 따라가지 않도록 하였습니다.
#include "Camera/CameraComponent.h"
또한 다음과 같은 헤더파일을 include 하였습니다.
Player-Controlled Cameras
Learn to manipulate a Camera and a Pawn at the same time, using player input.
docs.unrealengine.com
'[게임 개발] 개발 일지 > RPG' 카테고리의 다른 글
5. 애니메이션 트리밍 및 문제점 수정 (0) | 2023.09.12 |
---|---|
4. 캐릭터 상태에 따른 애니메이션 추가 (0) | 2023.09.10 |
3. 향상된 입력을 이용한 캐릭터 이동 (0) | 2023.09.09 |
1. 게임 모드와 캐릭터 세팅 (0) | 2023.09.07 |
0. 개발 목표 및 개발 일정 (0) | 2023.09.07 |