Language:
Page Info
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

2.ゲーム入力の設定

入力マッピングにはアクション マッピングと軸マッピングの 2 種類があります。

  • Action Mappings (アクション マッピング) は、例えばマウスやジョイスティックのボタンで入力する 「yes」 または 「no」 入力と考えるとわかりやすいです。ボタンを押下、リリース、ダブルクリック、またはしばらくの間押したままの状態の時にレポートします。ジャンプ動作、射撃動作、またはオブジェクトとのインタラクション動作などの個別のアクションがこのタイプのマッピングの有力候補です。

  • Axis Mappings (軸マッピング) は継続的な入力に使用します。ジョイスティック入力やマウスのカーソル位置など、「どれだけ」の値が入力されたか?と考えると分かりやすいです。移動してない場合でもフレームごとに値をレポートします。ウォーキング、周囲の見回しやビークルの操縦など、大きさや方向を伴う動作は通常はこの手法で処理されます。

入力マッピングはコードに直接定義することもできますが、一般的にはこのチュートリアルで紹介するように アンリアル エンジン エディタで定義します。

  1. アンリアルエンジン エディタの [Edit (編集)] ドロップダウンメニューから [Project Settings (プロジェクト設定)] オプションをクリックします。

    EditProjectSettings.png

  2. そして左側の [Engine (エンジン)] セクションから [Input (入力)] オプションを選択します。右側に表示される [Bindings (バインディング)] カテゴリを展開して、[Action Mapping] を1つ、[Axis Mappings] を2つ追加します。

    [Action Mapping] または [Axis Mapping] セクション見出しの横にある+記号で新しいマッピングを追加します。左側の展開用の矢印でマッピングを表示または非表示にできます。 マッピングに入力を追加するには、対象のマッピングの横に表示される+記号をクリックします。必要なマッピングと入力は以下の通りです。"S" と A" の入力のマイナス値に留意してください。

    Action Mapping (アクション マッピング)

    Grow

    スペース バー

    Axis Mapping (軸マッピング)

    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 の設定に必要な手順がもう 1 つあります。ゲームに表示されるように スタティックメッシュ を割り当てなければいけません。作成したばかりの MyPawn を選択します。そして[Details (詳細)] パネル で [OurVisibleComponent (Inherited)] を選択して、Static Mesh カテゴリのドロップダウン ボックスからアセットを割り当てます。このチュートリアルでは Shape_Cylinder を使用します。

    StaticMesh.png

  5. レベルを保存して、配置した MyPawn を定義した入力に対応させるコードを記述するために Visual Studio へ戻ります。


Visual Studio で MyPawn のコードを完成させます。

作業中のコード

MyPawn.h

// Copyright 1998-2017 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();

public:
    // 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-2017 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. (フレーム毎に Tick() を呼び出すようにこのポーンを設定します。) 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);

}