이 글은 Inflearn - Rookiss : 언리얼 엔진4 입문 강의를 듣고 정리한 글입니다.
목차.
Character Class 추가
콘텐츠 브라우저 빈 공간 우클릭 -> 새로운 c++ 클래스 -> Character 클래스 선택
Character Class 구조
Character 클래스를 생성하면 ACharcter 클래스를 상속받는 새로운 클래스가 생성됩니다.
클래스의 구조는 Pawn과 동일해 보이는데 한번 ACharacter의 구조를 보겠습니다.
지금까지 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로 변경된 것을 볼 수 있습니다.
이제 게임을 실행하면
캐릭터 생성과 움직임 모두 잘 되는 것을 볼 수 있습니다.
다음에는 카메라 제어에 대해서 글을 작성하겠습니다.
'언리얼' 카테고리의 다른 글
[UE4] 언리얼 엔진 : 스타터 콘텐츠(StarterContent) 삭제하기 (0) | 2023.08.19 |
---|---|
[UE4] 언리얼 엔진 기초 : 클래스에서 카메라 움직임 제어 (0) | 2023.08.19 |
[UE4] 언리얼 엔진 기초 : 게임플레이 프레임워크 - GameMode와 Pawn 움직이기 (0) | 2023.08.19 |
[UE4] 언리얼 엔진 기초 : 회전(FRotator) (0) | 2023.08.18 |
[UE4] 언리얼 엔진 기초 : 로그(UE_LOG)출력과 디버깅 (0) | 2023.08.18 |