このページでは、キャラクター を作成し、入力を受けとるようにセットアップします。その後、キャラクターを ゲームモード に割り当て、ゲームプレイ中にデフォルトのポーンになるようにします。キャラクターを作成した後に、プレイヤーの入力にどのように反応するのかを定義します。
Unreal は幅広いプロジェクト タイプにさらに複雑な入力マッピングを提供します。詳細については「Enhanced Input」を参照してください。
プロジェクトのセットアップ
-
まず、[Games (ゲーム)] > [Blank (空白)] > [Blueprint (ブループリント)] の順に選択して、「SettingUpInput」という名前の新規プロジェクトを作成します。
-
エディタで、[Edit (編集)] > [Project Settings (プロジェクト設定)] > [Input (入力)] > [Bindings (バインディング)] に移動します。
-
まず、[Games (ゲーム)] > [Blank (空白)] > [C++] の順に選択して、「SettingUpInput」という名前の新規プロジェクトを作成します。
-
エディタ で、[Edit (編集)] > [Project Settings (プロジェクト設定)] > [Input (入力)] > [Bindings (バインディング)] に移動します。

Action Mappings と Axis Mappings のセットアップ
入力の設定は、Action Mappings と Axis Mappings のユーザー定義による Bindings によって行われます。入力動作とそれを呼び出すキーの間に間接のレイヤーを挿入することで、キーと軸を入力動作にうまくマッピングするメカニズムを提供します。
Action Mappings はキーを押したり離したりするためのもので、一方 Axis Mappings は連続した範囲への入力を可能にします。マッピングを定義したら、それらをブループリントまたは C++ の動作にバインドできます。
-
[Action Mappings] の横にある 追加マーク (+) をクリックして、「Jump」という名前のアクションを新規作成します。
-
ドロップダウンの矢印 (1) または キー値選択 ボタン (2) のいずれかから [Space Bar] キー値を探して選択します。
-
Axis mappings に移動して 追加マーク (+) をクリックして次の Axis Mapping 名、キー 値、スケール 値を作成します。
Axis Mapping 名 キー値 スケール値 MoveForward W 1.0 S -1.0 MoveRight A -1.0 D 1.0 Turn Mouse X 1.0 LookUp Mouse Y -1.0
サンプル キャラクターを作成する
サンプル キャラクターを作成する
Character (キャラクター) は、歩き回る能力を持つ特別なタイプのポーン です。Character は Pawn クラスから拡張され、ワールド内のプレイヤーや AI エンティティの物理表現など、同様のプロパティを継承しています。
-
コンテンツ ドロワー から [Add(+)] をクリックし、[Pick Parent Class (親クラスを選択)] メニューから親クラスとして [Character] を選択します。
-
ブループリントに「BP_ExampleCharacter」という名前を付け、ダブルクリックして、そのクラスのデフォルトを開きます。
Character (キャラクター) は、歩き回る能力を持つ特別なタイプのポーン です。Character は Pawn クラスから拡張され、ワールド内のプレイヤーや AI エンティティの物理表現など、同様のプロパティを継承しています。
-
コンテンツ ドロワーで、「C++ classes」フォルダに移動して右クリックし、[New C++Class (新規 C++ クラス)] を選択して、親クラスとして [Character] を選択します。
-
Character クラスに「ExampleCharacter」という名前を付け、[Create Class (クラスを作成)] をクリックします。
Creating the SpringArm and Camera Components
SpringArm コンポーネントと Camera コンポーネントを作成する
Camera コンポーネントと SpringArm コンポーネントを一緒に使用すると、ゲーム ワールドに合わせて動的に調整できるサードパーソン視点向けの機能が提供されます。Camera (カメラ) コンポーネントには、プレイヤーの視点、つまり、プレイヤーがどのようにワールドを見ているのかを表すカメラが含まれています。SpringArm コンポーネントは、プレイヤーのカメラがワールドに衝突しないようにするための「カメラ ブーム」として使用されます。
-
[Components (コンポーネント)] タブで、[Add(+) (追加)] をクリックして、ドロップダウンで「Spring Arm」を検索します。Spring Arm コンポーネントの名前を「CameraBoom」に変更します。
-
手順 1 を繰り返します。ただし、「Camera」を検索します。Camera コンポーネントの名前を「FollowCamera」に変更します。
-
[Components (コンポーネント)] タブで FollowCamera を CameraBoom 上にドラッグし、アタッチします。
-
[Components] タブで [CameraBoom] を選択して、[Details (詳細)] > [Camera Settings (カメラの設定)] に移動して、チェックボックスをクリックして、Use Pawn Control Rotation 変数を有効にします。有効にすると、カメラの親はポーン (ExampleCharacter) のビュー/コントロール回転を使用します。
キャラクターの視点に使用できる追加のスプリング アームおよびカメラ設定については、「カメラを使用する」を参照してください。
-
コンパイル して 保存 します。
Camera コンポーネントと SpringArm コンポーネントを一緒に使用すると、ゲーム ワールドに合わせて動的に調整できるサードパーソン視点向けの機能が提供されます。Camera (カメラ) コンポーネントには、プレイヤーの視点、つまり、プレイヤーがどのようにワールドを見ているのかを表すカメラが含まれています。SpringArm コンポーネントは、プレイヤーのカメラがワールドに衝突しないようにするための「カメラ ブーム」として使用されます。
-
コード エディタで、ExampleCharacter.h に移動します。[Class Defaults (クラスのデフォルト)] で、次のクラスを宣言します。
protected: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Components") class USpringArmComponent* CameraBoom; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Components") class UCameraComponent* FollowCamera; |
UProperty 指定子 は、ブループリント エディタでコンポーネントの可視性を提供するために使用されます。
-
「
ExampleCharacter.cpp
」ファイルに移動します。次のライブラリを include 行に追加します。#include "GameFramework/SpringArmComponent.h" #include "Camera/CameraComponent.h"
-
次に、
AExampleCharacter
コンストラクタで以下を実装します。AExampleCharacter::AExampleCharacter() { //Initialize the Camera Boom CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom")); //Setup Camera Boom attachment to the Root component of the class CameraBoom->SetupAttachment(RootComponent); //Set the boolean to use the PawnControlRotation to true. CameraBoom->bUsePawnControlRotation = true; //Initialize the FollowCamera FollowCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera")); //Set FollowCamera attachment to the Camera Boom FollowCamera->SetupAttachment(CameraBoom); }
このコンポーネントは「FObjectInitializer::CreateDefaultSubobject」テンプレートを呼び出し、 SetupAttachment メソッドを使用して親の Scene コンポーネントにアタッチされます。カメラ ブームがポーンの コントロール回転 を使用するように設定すると、自身の回転ではなく、その親ポーンの回転を使用します。
- コードをコンパイルします。
キャラクター メッシュを設定する
-
[Components (コンポーネント)] パネルで、Mesh Skeletal Mesh コンポーネントを選択します。
-
[Details] > [Mesh (メッシュ)] > [Skeletal Mesh (スケルタル メッシュ)] に移動し、ドロップダウン メニューを展開します。[Browse Asset Options (アセット オプションを参照)] > [Content (コンテンツ)] > [Show Engine Content (エンジンのコンテンツを表示)] を選択します。
-
TutorialTPP スケルタル メッシュを検索して選択します。
-
[Transform (トランスフォーム)] カテゴリに移動して、メッシュの Location と Rotation のベクター値を (「0.0」、「0.0」、「-90」)
-
コンパイル して 保存 します。
入力コンポーネントに対するアクション/軸関数を作成する
-
ExampleCharacter.h
クラスのデフォルト内で、以下の入力関数を宣言します。protected: void MoveForward(float AxisValue); void MoveRight(float AxisValue);
-
ExampleCharacter.cpp
に移動し、MoveForward
メソッドとMoveRight
メソッドを実装します。void AExampleCharacter::MoveForward(float AxisValue) { if ((Controller != NULL) && (AxisValue != 0.0f)) { // find out which direction is forward const FRotator Rotation = Controller->GetControlRotation(); const FRotator YawRotation(0, Rotation.Yaw, 0); // get forward vector const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X); AddMovementInput(Direction, AxisValue); } } void AExampleCharacter::MoveRight(float AxisValue) { if ((Controller != NULL) && (AxisValue != 0.0f)) { // find out which direction is right const FRotator Rotation = Controller->GetControlRotation(); const FRotator YawRotation(0, Rotation.Yaw, 0); // get right vector const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y); // add movement in that direction AddMovementInput(Direction, AxisValue); } }
-
SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) メソッドに移動して、以下のコードを実装します。
void AExampleCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump); PlayerInputComponent->BindAction("Jump", IE_Released, this, &ACharacter::StopJumping); PlayerInputComponent->BindAxis("MoveForward", this, &AExampleCharacter::MoveForward); PlayerInputComponent->BindAxis("MoveRight", this, &AExampleCharacter::MoveRight); PlayerInputComponent->BindAxis("Turn", this, &APawn::AddControllerYawInput); PlayerInputComponent->BindAxis("LookUp", this, &APawn::AddControllerPitchInput); }
Player Input コンポーネント は、プロジェクト内の AxisMapping と ActionMapping をゲーム アクションにリンクさせます。Pawn クラスと Character クラスにはどちらも、継承したメソッドが格納されています。このメソッドはカスタム キャラクター用に使用または拡張することができます。 この例では、Pawn の AddControllerYawInput 関数と AddControllerPitchInput 関数、および Character の Jump 関数と StopJumping 関数を使用しています。
- コードをコンパイルします。
入力イベントに対するアクション/軸関数を作成する
-
[My Blueprint (マイ ブループリント)] > [Functions (関数)] に移動し、[Add(+)] をクリックして、2 つの新しい関数を追加します。MoveForward および MoveRight に設定します。
-
MoveForward 関数を選択し、[Details] > [Inputs]** に移動して、[Add(+)] をクリックし、「AxisValue」という名前の新しい float** 値入力を追加します。
-
MoveForward 関数に以下のロジックをコピーまたは実装します。
Begin Object Class=/Script/BlueprintGraph.K2Node_FunctionEntry Name="K2Node_FunctionEntry_0" ExtraFlags=201457664 FunctionReference=(MemberName="MoveForward") bIsEditable=True NodePosX=-32 NodePosY=16 NodeGuid=A0FF87524A53EDAA6CBEC48FEE0D9464 CustomProperties Pin (PinId=B427E05D444F66A59DA68E9A5D09AB7B,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_7346 B27FCDDF43B9261BD870CE965B82DF38,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=F01767A145595ED17A3E438A7F7BEFA2,PinName="AxisValue",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="double",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_7346 D95413A34BE985375A5C2F905CD8109F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties UserDefinedPin (PinName="AxisValue",PinType=(PinCategory="real",PinSubCategory="double"),DesiredPinDirection=EGPD_Output) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_7346" FunctionReference=(MemberName="AddMovementInput",bSelfContext=True) NodePosX=384 ErrorType=1 NodeGuid=CE1F697649E08F668E46BFA6FF6FE134 CustomProperties Pin (PinId=B27FC -
MoveRight 関数を選択し、手順 2 の説明に沿って、新しい float 値を追加します。
-
MoveRight 関数に以下のロジックをコピーまたは実装します。
Begin Object Class=/Script/BlueprintGraph.K2Node_FunctionEntry Name="K2Node_FunctionEntry_0" ExtraFlags=201457664 FunctionReference=(MemberName="MoveRight") bIsEditable=True NodePosX=64 NodePosY=-48 NodeGuid=5846746C4FEEF77A895638939B0C845C CustomProperties Pin (PinId=09949021438E59AA6E23A8B112C93B0D,PinName="then",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_7346 B27FCDDF43B9261BD870CE965B82DF38,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=0FE0FC0344DE295574151E8BA52B9628,PinName="AxisValue",Direction="EGPD_Output",PinType.PinCategory="real",PinType.PinSubCategory="double",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_CallFunction_7346 D95413A34BE985375A5C2F905CD8109F,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties UserDefinedPin (PinName="AxisValue",PinType=(PinCategory="real",PinSubCategory="double"),DesiredPinDirection=EGPD_Output) End Object Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_7346" FunctionReference=(MemberName="AddMovementInput",bSelfContext=True) NodePosX=432 NodePosY=-64 ErrorType=1 NodeGuid=0A9F72574C55739F8ABF479B3DA34A3C CustomProperties Pin ( -
イベント グラフに移動します。Axis 入力イベントおよび Action 入力イベントで、それぞれの関数を呼び出すように設定する必要があります。以下のロジックをコピーまたは実装します。
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name="K2Node_CallFunction_0" FunctionReference=(MemberName="MoveForward",MemberGuid=C0341673464A891BBAB256A597CC129B,bSelfContext=True) NodePosX=752 NodePosY=96 NodeGuid=F58C25A840CC8F0AFBDAF29C9156738F CustomProperties Pin (PinId=0AB1925F4322FE3D3E6EB4A491889FC9,PinName="execute",PinToolTip="\nExec",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,LinkedTo=(K2Node_InputAxisEvent_0 C6162D6E4C41B2636D72DB955E9701A2,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=75B681B34A8D4B3145A6B88572E666E2,PinName="then",PinToolTip="\nExec",Direction="EGPD_Output",PinType.PinCategory="exec",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUObjectWrapper=False,PinType.bSerializeAsSinglePrecisionFloat=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,) CustomProperties Pin (PinId=A75F913B4741D285583415B3E8CFF56F,PinName="self",PinFriendlyName=NSLOCTEXT("K2Node", "Target", "Target"),PinToolTip="Target\nSelf Object Reference",PinType.PinCategory="object",PinType.PinSubCategory="self",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PinType.bIsUOb
完成したコード
ExampleCharacter.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "ExampleCharacter.generated.h"
UCLASS()
class SETTINGUPINPUT_API AExampleCharacter : public ACharacter
{
GENERATED_BODY()
public:
// Sets default values for this character's properties
AExampleCharacter();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
UPROPERTY(EditDefaultsOnly,BlueprintReadOnly)
class USpringArmComponent* CameraBoom;
UPROPERTY(EditDefaultsOnly,BlueprintReadOnly)
class UCameraComponent* FollowCamera;
void MoveForward();
void MoveRight();
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
// Called to bind functionality to input
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
};
ExampleCharacter.cpp
// Sets default values
AExampleCharacter::AExampleCharacter()
{
//Initialize the Camera Boom
CameraBoom = CreateDefaultSubobject<USpringArmComponent>(TEXT("CameraBoom"));
//Setup its attachment to the Root component of the class
CameraBoom->SetupAttachment(RootComponent);
//Set the boolean to use the PawnControlRotation to true.
CameraBoom->bUsePawnControlRotation = true;
//Initialize the Camera Comp
FollowCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("FollowCamera"));
//Set its attachment to the Camera Boom
FollowCamera->SetupAttachment(CameraBoom);
}
// Called when the game starts or when spawned
void AExampleCharacter::BeginPlay()
{
Super::BeginPlay();
}
void AExampleCharacter::MoveForward(float AxisValue)
{
if ((Controller != NULL) && (AxisValue != 0.0f))
{
// find out which direction is forward
const FRotator Rotation = Controller->GetControlRotation();
const FRotator YawRotation(0, Rotation.Yaw, 0);
// get forward vector
const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
AddMovementInput(Direction, AxisValue);
}
}
void AExampleCharacter::MoveRight(float AxisValue)
{
if ((Controller != NULL) && (AxisValue != 0.0f))
{
// find out which direction is right
const FRotator Rotation = Controller->GetControlRotation();
const FRotator YawRotation(0, Rotation.Yaw, 0);
// get right vector
const FVector Direction = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);
// add movement in that direction
AddMovementInput(Direction, AxisValue);
}
}
// Called every frame
void AExampleCharacter::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
// Called to bind functionality to input
void AExampleCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
// Set up gameplay key bindings
check(PlayerInputComponent);
PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump);
PlayerInputComponent->BindAction("Jump", IE_Released, this, &ACharacter::StopJumping);
PlayerInputComponent->BindAxis("Move Forward", this, &AExampleCharacter::MoveForward);
PlayerInputComponent->BindAxis("Move Right", this, &AExampleCharacter::MoveRight);
}
キャラクター ブループリントを作成する
-
「C++ Classes」フォルダに移動し、ExampleCharacter を右クリックしてドロップダウン メニューから [Create Blueprint class based on ExampleCharacter (ExampleCharacter をベースにしたブループリント クラスを作成)] を選択します。ブループリントに「BP_ExampleCharacter」という名前を付けます。
-
[Components (コンポーネント)] パネルで、Mesh Skeletal Mesh コンポーネントを選択します。
-
[Details] > [Mesh (メッシュ)] > [Skeletal Mesh (スケルタル メッシュ)] に移動し、ドロップダウン メニューを展開します。[Browser (ブラウザ)] セクションで、[Settings (設定)] アイコンをクリックします。次に、コンテキスト メニューから、[Content (コンテンツ)] > [Show Engine Content (エンジンのコンテンツを表示)] を選択します。
-
TutorialTPP スケルタル メッシュを検索して選択します。
-
[Transform (トランスフォーム)] カテゴリに移動して、メッシュの Location と Rotation のベクター値を (「0.0」、「0.0」、「-90」)
完成したブループリント
MoveForward

MoveRight

イベント グラフ

Creating the GameMode Blueprint
GameMode では、一連のゲームのルールを定義します。このルールには、ゲーム起動時にプレイヤーがどのようなデフォルト ポーンとしてスポーンされるかが含まれます。作成したプレイヤー キャラクターをスポーンするためには、これらのルールを設定する必要があります。
-
コンテンツ ドロワー で、[Add(+)] をクリックして新しい ブループリント クラス を作成し、ドロップダウン メニューから [Game Mode Base (ゲーム モード ベース)] を 親クラス として選択します。ゲーム モードに「BP_InputGameMode」という名前を付けます。
-
[Class Defaults (クラスのデフォルト)] で、[Classes (クラス)] > [Default Pawn Class (デフォルトの Pawn クラス)] に移動し、BP_ExampleCharacter を選択します。
-
コンパイル して 保存 します。
-
[Edit (編集)] > [Project Settings (プロジェクト設定)] > [Maps & Modes (マップ & モード)] に移動します。[Default GameMode (デフォルト ゲームモード)] を BP_InputGameMode に設定します。
-
エディタ に移動し、[Play (Play in Editor) (プレイ (プレイインエディタ))] を選択します。
これで、W、A、S、D キーでキャラクターの動きをコントロールできるようになりました。マウスを動かすとカメラが動き、スペース キーを押すとキャラクターがジャンプします。
GameMode では、一連のゲームのルールを定義します。これらのルールには、ゲーム起動時にプレイヤーがどのようなデフォルト ポーンとしてスポーンされるかが含まれます。作成したプレイヤー キャラクターをスポーンするためには、これらのルールを設定する必要があります。
-
コンテンツ ドロワー で、「C++ Classes」フォルダに移動し、ドロップダウン メニューから SettingUpInputGameModeBase を右クリックし、[Create Blueprint Based on SettingUpInputGameModeBase (SettingUpInputGameModeBase をベースにしたブループリントを作成)] を選択します。ゲーム モード ブループリントに「BP_InputGameMode」という名前を付けます。
-
[Class Defaults (クラスのデフォルト)] で、[Classes (クラス)] > [Default Pawn Class (デフォルトの Pawn クラス)] に移動し、BP_ExampleCharacter を選択します。
-
コンパイル して 保存 します。
-
[Edit (編集)] > [Project Settings (プロジェクト設定)] > [Maps & Modes (マップ & モード)] に移動します。[Default GameMode (デフォルト ゲームモード)] を BP_InputGameMode. に設定します。
-
エディタ に移動し、[Play (Play in Editor) (プレイ (プレイインエディタ))] を選択します。
これで、W、A、S、D キーでキャラクターの動きをコントロールできるようになりました。マウスを動かすとカメラが動き、スペース キーを押すとキャラクターがジャンプします。
結果
