1. 기본 맵 만들기
Starter Content를 추가해서 Architecture에 있는 Floor, Wall, Door 등을 사용했습니다.
기본 맵을 활용해서 여러가지 스테이지를 제작할 예정입니다.
2. 1인칭 캐릭터 만들기
// MyPlayerCharacter.h
protected:
UPROPERTY(Category = Character, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))
UCameraComponent* Camera;
UPROPERTY(Category = Character, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))
USpringArmComponent* Arm;
// MyPlayerCharacter.cpp
AMyPlayerCharacter::AMyPlayerCharacter()
{
// 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;
Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
Arm = CreateDefaultSubobject<USpringArmComponent>(TEXT("Arm"));
Arm->SetupAttachment(GetMesh());
Camera->SetupAttachment(Arm);
}
Character 클래스를 상속받아서 플레이어를 만들고 스프링암과 카메라를 달아서 1인칭으로 구현했습니다.
3. 액션, 축 매핑
// MyPlayerCharacter.h
private:
void MoveFront(float fScale);
void MoveSide(float fScale);
void RotationY(float fScale);
void RotationZ(float fScale);
void JumpKey();
// MyPlayerCharacter.cpp
void AMyPlayerCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
Super::SetupPlayerInputComponent(PlayerInputComponent);
PlayerInputComponent->BindAxis(TEXT("MoveFront"), this, &AMyPlayerCharacter::MoveFront);
PlayerInputComponent->BindAxis(TEXT("MoveSide"), this, &AMyPlayerCharacter::MoveSide);
PlayerInputComponent->BindAxis(TEXT("RotationY"), this, &AMyPlayerCharacter::RotationY);
PlayerInputComponent->BindAxis(TEXT("RotationZ"), this, &AMyPlayerCharacter::RotationZ);
PlayerInputComponent->BindAction(TEXT("Jump"), EInputEvent::IE_Pressed, this, &AMyPlayerCharacter::JumpKey);
}
프로젝트 세팅의 입력으로 가서 액션 매핑으로는 점프, 축 매핑으로는 WSAD로 전후좌우 움직일 수 있게 하였고, 마우스 이동을 통해 축 값을 회전시키는것을 구현했습니다.
4. 게임 모드
// MainGameMode.cpp
AMainGameMode::AMainGameMode()
{
// 플레이어로 사용할 블루프린트 클래스의 UCLASS 정보를 얻어온다.
// 이 기능은 생성자에서만 사용이 가능하다.
// 클래스 정보를 만들어낼 때는 경로의 마지막에 _C를 꼭 붙여주어야한다.
// defaultpawnclass로 바뀌는 버그 있으면 다시 레퍼런스 복붙하고 컴파일
static ConstructorHelpers::FClassFinder<AMyPlayerCharacter> PlayerClass(TEXT("Blueprint'/Game/GameContent/Player/BPMyPlayerCharacter.BPMyPlayerCharacter_C'"));
if (PlayerClass.Succeeded())
DefaultPawnClass = PlayerClass.Class;
}
게임모드에서 위에 만든 플레이어 클래스를 디폴트폰으로 지정합니다.
게임모드가 제대로 적용됐는지 확인하고 플레이해보면 만들어놓은 플레이어가 제대로 빙의되어있는것을 확인할 수 있습니다.
'게임 개발 (언리얼 엔진)' 카테고리의 다른 글
UE4 게임 개발 EscapeGame - 6 : 디스트럭터블 메시(Destructible Mesh) (0) | 2020.12.01 |
---|---|
UE4 게임 개발 EscapeGame - 5 : 트리거 클래스 구성 (0) | 2020.11.26 |
UE4 게임 개발 EscapeGame - 4 : 트리거 활용 (0) | 2020.11.23 |
UE4 게임 개발 EscapeGame - 3 : TriggerBox와 BeginOverlap/EndOverlap (0) | 2020.11.12 |
UE4 게임 개발 EscapeGame - 1 : 컨텐츠 구상 (0) | 2020.11.02 |