Pawn에서 Character로 넘어갈 때 생각보다 기능이 많이 추가된다.
Character는 기본적으로 SkeletalMesh가 붙어있다.
CharacterMoveComponent가 기본적으로 상속되어있다.
액터나 폰은 생성자에서 메시나 루트 컴포넌트를 직접 설정해줬어야 하는데 캐릭터는 부모 클래스가 기본값으로 다 설정을 해둔다.
// MyCharacter.h
void UpDown(float Value); // 이전시간 Pawn에 있던 것과 같음
void LeftRight(float Value); // cpp에서도 똑같이 복붙 해주면 된다. 클래스명만 바꿔서.
private:
UPROPERTY(VisibleAnywhere)
class USpringArmComponent* SpringArm; // CoreMinimal에 없으므로 전방선언
UPROPERTY(VisibleAnywhere)
class UCameraComponent* Camera; // 마찬가지로 전방선언
};
// MyCharacter.cpp
#include "MyCharacter.h"
#include "GameFramework/SpringArmComponent.h"
#include "Camera/CameraComponent.h"
#include "Components/CapsuleComponent.h"
// Sets default values
AMyCharacter::AMyCharacter()
{
// Set this character to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
// 보이지 않는 일종의 셀카봉
SpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("SPRINGARM"));
// 카메라
Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("CAMERA"));
// 셀카봉을 캐릭터의 하위 구조에 넣음
SpringArm->SetupAttachment(GetCapsuleComponent());
// 카메라를 셀카봉의 하위 구조에 넣음
Camera->SetupAttachment(SpringArm);
// 셀카봉을 늘린다
SpringArm->TargetArmLength = 500.f;
// 캐릭터의 뒤쪽으로 뻗어나가게 회전 시킨다
SpringArm->SetRelativeRotation(FRotator(-35.f, 0.f, 0.f));
// 캐릭터 메시 위치를 조정한다 (위치 및 회전 동시 조정)
GetMesh()->SetRelativeLocationAndRotation(
FVector(0.f, 0.f, -88.f), FRotator(0.f, -90.f, 0.f));
static ConstructorHelpers::FObjectFinder<USkeletalMesh> SM(TEXT("SkeletalMesh'/Game/ParagonGreystone/Characters/Heroes/Greystone/Meshes/Greystone.Greystone'"));
if (SM.Succeeded())
{
// StaticMesh가 아닌 SkeletalMesh를 가지고 있으므로 맞춰서 변경해줌
GetMesh()->SetSkeletalMesh(SM.Object);
}
}
상속 구조도 그대로 표현되는 것을 확인할 수 있다.
마우스 좌우 움직임으로 캐릭터 회전을 추가하는 경우, 기존 키 입력처럼 프로젝트 세팅에서 마우스 축을 추가하고,
SetupPlayerInputComponent에서 BindAxis를 해준 후 메소드를 구현해주면 된다.
'언리얼 엔진 > 언리얼 엔진4 입문' 카테고리의 다른 글
[UE4 입문] 애니메이션 기초 (0) | 2022.09.01 |
---|---|
[UE4 입문] 블루프린트 클래스 (0) | 2022.09.01 |
[UE4 입문] 게임플레이 프레임워크 (0) | 2022.09.01 |
[UE4 입문] 로그와 디버깅 (0) | 2022.09.01 |
[UE4 입문] 유니티 vs 언리얼 (0) | 2022.09.01 |