728x90
이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다.

 

목차.

  1. Character Class 추가
  2. Character Class 구조
  3. Character 매쉬 추가
  4. Character 이동 구현

 

Character Class 추가

 

콘텐츠 브라우저 빈 공간 우클릭 -> 새로운 c++ 클래스 -> Character 클래스 선택

 

Character 부모클래스로 생성

 

Character Class 구조

 

Character 클래스를 생성하면 ACharcter 클래스를 상속받는 새로운 클래스가 생성됩니다.

 

Character 클래스 구조

 

클래스의 구조는 Pawn과 동일해 보이는데 한번 ACharacter의 구조를 보겠습니다.

 

Character 클래스 구조2

 

지금까지 Actor와 Pawn 클래스를 공부했는데 Character 클래스와 어떤 차이가 있을까요?

Actor와 Pawn 클래스
  • Mesh 없음
  • Movement 없음
  • UCapsuleComponent 없음

 

CharacterComponent 클래스
  • UCharacterMovementComponent 가 있음
  • UCapsuleComponent 가 있음
  • USkletalMeshComponent 가 있음

 

다른 클래스와 다르게 처음부터 Mesh와 Movement 등 추가가 되어있다는 특징이 있습니다.

 

 

Character 매쉬 추가

 

위에 차이점에서 쓴것처럼 Character 클래스는 Actor와 Pawn과는 달리 USkeletalMesh를 사용한다는 차이점이 있습니다.

 

그리고 매쉬도 기존에는 Mesh->와 같은 형태로 써야했지만

 

Character 클래스는 GetMesh()->를 통해서 Mesh를 추가할 수 있습니다.

 

.cpp의 생성자에 코드 추가

static	ConstructorHelpers::FObjectFinder<USkeletalMesh> SM(TEXT("SkeletalMesh'/Game/ParagonGreystone/Characters/Heroes/Greystone/Meshes/Greystone.Greystone'"));
if (SM.Succeeded())
{
	GetMesh()->SetSkeletalMesh(SM.Object);
}

 

Character 이동 구현

 

이동은 Pawn 클래스와 크게 다른 점은 없습니다.

하나 차이점은 Movement 컴포넌트는 클래스에 이미 속해있기 때문에 따로 만들 필요 없다는 점입니다.

 

.h

class TESTUNREALENGINE_API AMyCharacter : public ACharacter
{
public:
....
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
void UpDown(float Value);
void LeftRight(float Value);
....
}

 

.cpp

void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);
	PlayerInputComponent->BindAxis(TEXT("UpDown"), this, &AMyCharacter::UpDown);
	PlayerInputComponent->BindAxis(TEXT("LeftRight"), this, &AMyCharacter::LeftRight);
}
void AMyCharacter::UpDown(float Value)
{
	if (Value == .0f)
		return;
	AddMovementInput(GetActorForwardVector(), Value);
}

void AMyCharacter::LeftRight(float Value)
{
	if (Value == .0f)
		return;
	AddMovementInput(GetActorRightVector(), Value);
}

 

작동 확인하기 전 MyGameModeBase 클래스에서 DefaultPawnClass를 전에 작성한 Pawn 클래스로 했었는데 
새롭게 작성한 Character 클래스로 변경하겠습니다.

 

#include "MyGameModeBase.h"
#include "MyCharacter.h" //헤더 파일 추가


AMyGameModeBase::AMyGameModeBase()
{
	DefaultPawnClass = AMyCharacter::StaticClass();
}

 

다시 언리얼 에디터로 돌아와 컴파일을 하면 

 

그럼 아래 사진과 같이 Default Pawn Class가 MyCharacter로 변경된 것을 볼 수 있습니다.

 

Default Pawn 클래스 설정

 

이제 게임을 실행하면 

 

잘 작동하는 모습

 

캐릭터 생성과 움직임 모두 잘 되는 것을 볼 수 있습니다.

 

다음에는 카메라 제어에 대해서 글을 작성하겠습니다.

728x90

+ Recent posts