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.

1.ポーンのカスタマイズ

アンリアルエンジン 4 (UE4) にまだ慣れていない場合は、最初に プログラマ向けクイックスタート tutorial をお読みください。このチュートリアルの対象者は、プロジェクトの作成、プロジェクトに C++ コードを追加、またコードをコンパイルできる方を想定しています。

  1. まずスターターコンテンツを有効にして「HowTo_PlayerInput」という名前の新規 Basic Code プロジェクトを作成するところから始めます。その後「MyPawn」と名前を付けたカスタマイズした Pawn クラスをプロジェクトに追加します。

    ポーンは人プレイヤーまたは AI による制御が設定されている アクタ の一種です。

    AddPawn.png

    NameYourNewPawn.png

  2. まず、ゲーム開始時に MyPawn がプレイヤー入力に対し自動的に反応するように設定します。Pawn クラスから初期化中に設定できる変数を得ることができます。この変数はプレイヤー入力の自動対応を処理します。「MyPawn.cpp」ファイルの AMyPawn::AMyPawn に以下のコードを追加します:

    // Set this pawn to be controlled by the lowest-numbered player (このポーンが最小値のプレイヤーで制御されるように設定)
    AutoPossessPlayer = EAutoReceiveInput::Player0;
  3. 次に基本的な コンポーネント をいくつか構成します。コードによるコンポーネントの追加や管理に加えて、コンポーネントの一般的な種類の詳細については、コンポーネントとコリジョン tutorial を参照してください。作成するコンポーネントを追跡するには、クラス定義の下にある「 MyPawn.h 」へ以下のコードを追加してください。

    UPROPERTY(EditAnywhere)
    USceneComponent* OurVisibleComponent;

    この変数は アンリアルエンジン で表示されるように UPROPERTY とタグ付けされます。これはゲームがローンチしたときや、プロジェクトまたはレベルが閉じられたり、再読み込みされたときに変数がリセットされるのを防ぐため重要です。

    「MyPawn.cpp」ファイルへ戻って、以下のコードをAMyPawn::AMyPawnに追加します:

    // 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);
  4. 変更を保存してコンパイルできる状態になりました。Visual StudioBuild コマンドか、アンリアルエンジン エディタの [Compile (コンパイル)] ボタンでコンパイルを実行します。


ゲーム入力に対応するカスタマイズ ポーンを作成したので、入力規則を定義しなくてはいけません。入力は アンリアル エディタ[Input Settings (入力設定)] で定義します。

作業中のコード

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();

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-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);

}