2. 게임 입력 환경설정

언리얼 엔진에서 입력 환경설정 입니다.

Windows
MacOS
Linux

입력 매핑에는 액션 및 축, 두 종류가 있습니다.

  • 액션 매핑 은 마우스나 조이스틱의 버튼처럼 "예 / 아니오" 입력으로 생각하면 좋습니다. 누르거나 떼거나 더블클릭하거나 잠시 누르고 있거나 할 때 보고합니다. 점프, 슈팅, 오브젝트 상호작용 등 별도의 동작이 이러한 매핑 유형에 좋은 후보가 됩니다.

  • 축 매핑 은 연속적인 것으로, 마우스 커서의 위치나 조이스틱의 막대처럼 "일정량"의 입력으로 생각해 보면 좋습니다. 움직이지 않더라도 매 프레임마다 그 값을 보고합니다. 걷기, 둘러보기, 탈것의 조향처럼 세기나 방향이 있는 것들이 보통 이런 식으로 처리됩니다.

코드에서 직접 입력 매핑을 정의할 수는 있지만, 보통은 언리얼 엔진 에디터 안에서 정의하게 되니, 이 튜토리얼에서는 그 방식을 따르겠습니다.

  1. 언리얼 엔진 에디터에서 편집 드롭다운 메뉴 아래 프로젝트 세팅 옵션을 클릭합니다.

    EditProjectSettings.png

  2. 거기서 왼편의 엔진 섹션의 입력 옵션을 선택합니다. 오른편에 나타나는 바인딩 카테고리를 펼친 다음 액션 매핑 하나와 축 매핑 을 두 개 추가합니다.

    액션 매핑 또는 축 매핑 섹션 제목줄 옆의 더하기 부호로 새 매핑을 추가합니다. 왼편의 확장 화살표를 사용해서 매핑을 표시하거나 숨길 수 있습니다. 매핑에 부가 입력을 추가하려면, 그 매핑 옆의 더하기 부호를 클릭합니다. 다음은 필요한 매핑과 입력입니다. "S" 와 "A" 입력에 음수 값을 눈여겨 보세요.

    액션 매핑

    Grow

    Space Bar

    축 매핑

    MoveX

    W

    1.0

    S

    -1.0

    MoveY

    A

    -1.0

    D

    1.0

    ConfigureInput.png

  3. 입력 환경설정이 완료되었으니, 레벨에 MyPawn 을 구성합시다. 콘텐츠 브라우저 에 보이는 MyPawn 클래스를 레벨 에디터 로 끌어놓으면 됩니다.

    ClassInContentBrowser.png

    PawnInSceneView.png

  4. MyPawn 구성에는 한 단계가 더 필요합니다. 게임에서 볼 수 있으려면 스태틱 메시 를 줘야지요. 방금 만든 MyPawn 을 선택한 다음 디테일 패널 에서 "OurVisibleComponent (Inherited)" 라는 컴포넌트를 선택하고, 스태틱 메시 카테고리의 드롭다운 박스를 통해 애셋을 할당해 주면 됩니다. 이 튜토리얼에서는 "Shape_Cylinder" 애셋을 사용하면 좋습니다.

    StaticMesh.png

  5. 이제 레벨을 저장하고 Visual Studio 로 돌아가 배치한 MyPawn 이 정의한 입력에 반응하도록 코드를 작성해 주면 됩니다.


이제 Visual Studio 에서 MyPawn 클래스 코딩을 마무리해 주면 됩니다.

작업중 코드

MyPawn.h

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.

#pragma once

#include "GameFramework/Pawn.h"
#include "MyPawn.generated.h"

UCLASS()
class HOWTO_PLAYERINPUT_API AMyPawn : public APawn
{
    GENERATED_BODY()

public:
    // Sets default values
    AMyPawn();

protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

public:
    // Called every frame
    virtual void Tick( float DeltaSeconds ) override;

    // Called to bind functionality to input
    virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) override;

    UPROPERTY(EditAnywhere)
    USceneComponent* OurVisibleComponent;
};

MyPawn.cpp

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.

#include "HowTo_PlayerInput.h"
#include "MyPawn.h"

// Sets default values
AMyPawn::AMyPawn()
{
    // Set this pawn to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
    PrimaryActorTick.bCanEverTick = true;

    // Set this pawn to be controlled by the lowest-numbered player
    AutoPossessPlayer = EAutoReceiveInput::Player0;

    // Create a dummy root component we can attach things to.
    RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent"));
    // Create a camera and a visible object
    UCameraComponent* OurCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("OurCamera"));
    OurVisibleComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("OurVisibleComponent"));
    // Attach our camera and visible object to our root component. Offset and rotate the camera.
    OurCamera->SetupAttachment(RootComponent);
    OurCamera->SetRelativeLocation(FVector(-250.0f, 0.0f, 250.0f));
    OurCamera->SetRelativeRotation(FRotator(-45.0f, 0.0f, 0.0f));
    OurVisibleComponent->SetupAttachment(RootComponent);
}

// Called when the game starts or when spawned
void AMyPawn::BeginPlay()
{
    Super::BeginPlay();

}

// Called every frame
void AMyPawn::Tick( float DeltaTime )
{
    Super::Tick( DeltaTime );

}

// Called to bind functionality to input
void AMyPawn::SetupPlayerInputComponent(class UInputComponent* InputComponent)
{
    Super::SetupPlayerInputComponent(InputComponent);

}

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼