このチュートリアルでは、プレイヤーのブループリントを変更して、特定のキーを長押しして移動中にダッシュできる機能を追加します。 プレイヤーからの入力を受け取るために推奨される Unreal Engine の拡張入力システムについて学習します。 このシステムによって、以下の操作が可能です。
スプリント移動をトリガーする入力を定義する入力アクションを作成する。
入力アクションをイベントに変換して、それをプレイヤーのブループリントに接続する。
ダッシュ中のプレイヤーの移動速度を高める。
前のセクションでは、敵の視界に入ったときにプレイヤーを追跡するように、敵キャラクターのロジックを作成しました。 ダッシュ メカニックによって、敵キャラクターを回避するためにプレイヤーが使用できるゲームプレイ メカニックを提供できます。
ゲームをデザインする際は、敵などのプレイヤーが直面する課題をビルドするとともに、プレイヤーがそれらの課題を克服するために使用できるツールや戦略を提供することが重要です。
ダッシュ機能は、多くのジャンルにおいて、ほとんどのゲームで利用されている人気のある機能です。この機能を使用すると、プレイヤーをより速く移動させることができます。 このメカニックによって、レベルで設計した空間をプレイヤーが移動する方法が変わります。
開始する前に
「パズル アドベンチャーの設計」の以前のセクションで取り上げた、これらのトピックを理解できていることを確認します。
ノード、関数、イベントの追加など、ブループリントの基本から学習できます。
このチュートリアル シリーズの以前のドキュメントに記載されている次のアセットが必要になります。
BP_AdventureCharacter
入力アクション アセットを作成する
まず、以下の事項を定義する入力アクション アセットを作成します。
アクションの名前。
このアクションの値タイプ。
トリガーのタイプ (キーを押す、長押しする、離す)。
入力アクションとは、プレイヤー キャラクター ブループリントが新しい動作を実行する前にリッスンするものです。
その後、プロジェクトにすでに存在する入力マッピング コンテキスト アセットを使用して、入力アクションを特定のキーにバインド (「マッピング」とも呼ばれる) します。
これは、拡張入力システムで使用されるさまざまなアセット間の関係を示す図です。 詳細については、「拡張入力」のドキュメントを参照してください。
| 入力アクション | 入力マッピングコンテキスト | Blueprint (ブループリント) |
|---|---|---|
意図および検出ルールを定義します。 | キーとボタンを入力アクションにマッピングします。 | 入力アクションを使用して動作を実装します |
新しいダッシュ移動のための入力アクション アセットを作成するには、次の手順に従ってください。
コンテンツ ブラウザに行き、「Input」 > 「Actions」フォルダーに移動します。 このフォルダーには、Jump、Look、MouseLook、Move に関連する入力アクション アセットが表示されます。
コンテンツ ブラウザで右クリックして、Input に移動し、入力アクション アセットを作成します。
アセットに
「IA_Sprint」という名前を付けます。この命名規則は、これが入力アクション ファイルであることを定義する方法ですが、このように名前を付ける必要はありません。
「
IA_Sprint」をダブルクリックして開きます。 入力アクションはデータ アセットであり、詳細パネルがある新しいウィンドウで開くことができます。
入力アクション タイプ
次に IA_Sprint データ ウィンドウの詳細パネルを見てみましょう。 詳細パネルを使用して、このアセットのプロパティの変更 (プレイヤー キャラクターからリッスンしたいアクションの定義など) を行います。
まず Value Type プロパティに移動します。 これにより、入力アクションに含まれるデータのタイプが決まります。 入力アクションを作成する際は、アクションでキャプチャする動きの型に応じて値の型を選択します。
デフォルトでは、入力アクションの型はデジタル (ブール)で、オンとオフの状態 (ダッシュ中/非ダッシュ) があります。 IA_Sprintのデフォルト値はそのまま使用します。
値の型は次のようになります。
Axis1D: このアクションには、1 次元移動 (スクロールインとスクロールアウト) またはスカラー調整 (移動速度の変更) のいずれかの値が 1 つあります。
Axis2D: このアクションには、WSAD 制御などの 2 次元移動用の X 値と Y 値があります。
Axis3D:アクションには、飛行または水泳のコントロールなど、3 次元移動のための X、Y、および Z の値があります。
トリガーを使用して入力アクションを設定する
ダッシュ アクションをトリガーするキー押下のタイプを定義するには、次の手順に従ってください。
[Action (アクション)] セクションで、[Triggers (トリガー)] の横にある [+] ボタンをクリックして、新しい要素を [Triggers (トリガー)] マップに追加します。
追加した新しい要素で None (なし) と表示されているドロップダウン フィールドをクリックします。 コンボ、ホールド、ダウンさらにタップ、などのタッチ入力のオプションのリストが表示されます。ダッシュは一般にキーを押しているときに行われるので、リストから Down を選択します。
ウィンドウの左上にある [Save (保存)] ボタンをクリックして、変更を保存します。
IA_Sprintを閉じます。
Hold ではなく Down を選択するのは、Down はキーを押したときにすぐにトリガーされるのに対し、Hold はキーが押されている間、一定の時間が経過した後にトリガーされるからです。
ホールドは、キーを離す前にチャージが必要な重アタックアビリティなどのアクションで役立ちます。 マウス カーソルを合わせるとツールチップが表示され、選択内容の詳細を確認できます。
トリガーを展開すると、その作動しきい値、つまりアクションがトリガーされる前に、入力をどれだけ押下または移動させる必要があるかを確認できます。 キーボードのキーは、押されていない場合は「0」に、押されている場合は「1」に設定されます。 ゲームパッド コントロールは、入力が部分的に押されている場合は、0 ~ 1 の分数の値を使用することもできます。
これで入力アクション アセットが設定できました。 アクションに「IA_Sprint」という名前を付けて、何がそのアクションをトリガーするのか (キーまたはボタンの押下) を定義しました。 次に、入力マッピング コンテキストを使用して、そのアクションをトリガーするキーを定義します。
キー マッピングを割り当てる
入力マッピング コンテキスト アセットは、ちょうど作成した IA_Sprint など、それに割り当てられた入力アクション アセットを収集し、入力キーを設定し、プレイヤー キャラクターの BP_AdventureCharacter などのキャラクター ブループリントに値を渡します。
キーを IA_Sprint アクションにマッピングするには、次の手順を実行します。
コンテンツ ブラウザに戻ります。 「Input」 > 「Actions」フォルダーから 1 つ上のレベルにある「Input」フォルダーに移動します。 2 つの入力マッピング コンテキストアセット、
IMC_DefaultとIMC_MouseLookがあります。「IMC」は「入力マッピング コンテキスト」の略です。
IMC_Defaultをダブルクリックして、詳細パネルのある新しいエディタ ウィンドウで開きます。IMC_Defaultは、移動やジャンプなど、プレイヤーのデフォルトの能力に対してこのプロジェクトで使用する入力マッピング コンテキスト アセットです。[Mappings (マッピング)] セクションで [Mappings (マッピング)] リストを展開すると、IA_Jump、IA_Move、IA_Look の 3 つのエントリが表示されます。 これらは、先ほど見た「Input」>「Actions」フォルダー内の入力アクションです。
[Mappings (マッピング)] の横にある [Add (追加)] (+) ボタンを使用して、リストに追加のエントリを追加します。
新しいエントリについて、ドロップダウンを使用して、先ほど作成した IA_Sprint アセットを選択します。
IA_Sprint エントリを展開し、このアクションのキーの選択を表示します。 [Keyboard (キーボード)] ボタンをクリックして、キーボードの Caps Lock キーを押します。 また、ドロップダウン メニューを使用して、このアクションにキーを割り当てることもできます。
入力マッピング コンテキストを保存して閉じます。
IA_Sprint 入力アクション キーを定義したら、プレイヤーがキーを押し続けるとトリガーされる入力アクションができます。このアクションは Caps Lock キーにマップされます。
一部のキー マッピング (Shift、Ctrl、Alt など) は Unreal エディタ で使用されるため、PIE モードでのゲームのテスト時には機能しない場合があります。 これらのマッピングのいずれかを使用する場合は、スタンドアローン モードでテストするか開発中に別のキーを使用し、ゲームをパッケージ化する前に目的のキーに切り替える必要があります。 PIE モードで通常安全なキー マッピングには、文字キーと数字キー、矢印キー、Caps Lock、Enter、Backspace、Page Up/Down、Home/End があります。
プレイヤーのブループリントをダッシュに変更する
入力アクションが設定されたら、プレイヤーが割り当てたキー入力を使用してダッシュできるように、プレイヤーのブループリントを変更します。
プレイヤーが IA_Sprint のトリガーを押したときにプレイヤーの移動速度を上げることで、ダッシュ機能を作成します。 プレイヤーがダッシュのキーを放すと、キャラクターはデフォルトの移動速度に戻ります。
まずはデフォルト移動速度をキャラクターに付与し、それからダッシュ メカニックを作成します。
移動速度変数を作成する
まず、プレイヤーのデフォルト移動速度とダッシュ移動速度を保存する変数を作成します。 プレイヤーの移動コンポーネントはデフォルト移動速度を設定しますが、これを変数に保存することでその速度を保存し、スプリント アクションが終了した後にプレイヤーがその速度に戻れるようにします。
プレイヤーのさまざまな移動速度を保存する変数を設定するには、次の手順に従ってください。
コンテンツ ブラウザで、「Content」 > 「AdventureGame」 > 「Designer」 > 「Blueprints」 > 「haracters」フォルダーに移動し、
BP_AdventureCharacterブループリントを開きます。My Blueprints (マイ ブループリント) パネルで、「DefaultMovementSpeed」という名前の float 型の新しい変数を追加します。
「SprintMovementSpeed」という名前の変数をさらに1つ追加し タイプを「Float」にします。
ブループリント エディタの左上隅にある Compile (コンパイル) ボタンをクリックします。
次に、SprintMovementSpeed 変数をクリックします。 詳細 パネルで、 Default Value > Sprint Movement Speed を「1000」に変更します。
プレイヤーのデフォルト移動を設定する
ゲームが開始したら、プレイヤーのデフォルトをキャプチャします (まず移動速度から)。
ゲーム開始時にデフォルト移動速度を設定するには、次の手順を実行します。
イベント グラフで、空のスペースを右クリックして、Event BeginPlay ノードを作成します。 このノードは、ゲームが開始すると一度実行されます。
イベント BeginPlay を使用して、ゲーム開始時のプレイヤーのデフォルトの移動速度を取得します。 このノードの Exec ピンをドラッグして、Set Default Movement Speed ノードを作成します。
BP_Enemyを作成した際には、キャラクターの Movement コンポーネントには速度を制御するプロパティが含まれています。 [Components (コンポーネント)] パネルで、Character Movement (CharMoveComp) をイベント グラフにドラッグします。Character Movement ノードのピンをドラッグして、Get Max Walk Speed ノードを作成します。
Max Walk Speed ピンを Set Default Movement Speed ノードに接続します。
この機能は、プレイヤーの キャラクター移動コンポーネントの Max Walk Speed を使用して、作成した DefaultMovementSpeed 変数の値をプレイヤーのデフォルト歩行速度に設定します。
Characte Movement コンポーネントを選択し、[詳細パネル] の Cgaracter Movement: Walking セクションを確認すると、デフォルトの Max Walk Speed が 600 cm/s であることがわかります。
キャラクター移動コンポーネントにはキャラクターの動きを制御する多数のプロパティが含まれており、ランタイム時にブループリント ロジックを使用してこれらを使用または変更できます。
ダッシュ アクション動作を定義する
これでプレイヤーの開始移動速度が設定されたため、プレイヤーがダッシュ キーを押した際に、その速度を上げることができます。
イベント グラフに入力アクションを追加すると、Unreal Engine はイベント ノードを作成します。このノードは、入力マッピング コンテキストで定義されているように、プレイヤーがそのアクションのマッピングされたキーを押すと実行されます。 この場合、Caps Lock が押されると IA_Sprint イベントが実行されます。
IA_Sprint 入力アクションを使用してダッシュ メカニックを作成するには、次の手順に従ってください。
イベント グラフ内の空白の任意の場所を右クリックして、IA_Sprint を検索し、Input > Enhanced Action Events カテゴリにある IA_Sprint ノードを選択します。
ノードの下部にある矢印をクリックすると、追加のピンが表示されます。 Triggered ピンと Completed ピンを使用します。
Triggered は、プレイヤーがアクション キーを押していることを意味するため、キャラクターは SprintMovementSpeed で移動する必要があります。
完了は、プレイヤーがキーを放したことを意味するため、プレイヤーを DefaultMovementSpeed に戻す必要があります。
[Components] パネルで、Character Movement (CharMoveComp) コンポーネントをイベント グラフに再びドラッグします。
Character Movementピンからドラッグし、 Set Max Walk Speedノードを作成します。
Set Max Walk Speed ノードから、Max Walk Speed ピンをドラッグし、Get Sprint Movement Speed ノードを作成します。
IA_Sprint ノードの Triggered ピンを Set Max Walk Speed ノードに接続します。
これにより、プレイヤー キャラクターの移動速度が、以前に 1000 に設定された Sprint Movement Speed の値に設定されます。
最後に、プレイヤーがキーを離したときに移動速度をデフォルト値に戻す必要があり、このアクションは完了とマークされます。
ダッシュが終了したときにキャラクターをデフォルトの移動に戻すには、次の手順に従ってください。
IA_Sprint ノードから Completed (完了) ピンをドラッグし、Set Max Walk Speed ノードをもう 1 つ作成します。
Set Max Walk Speed ノードを設定します。
Max Walk SpeedではDefaultMovementSpeedへの参照を接続します。
Targetでは Character Movementコンポーネントの参照ノードを接続します
ブループリントをコンパイルして保存します。
キャラクターをテストする
Unreal Editor で、[Play (プレイ)] ボタンをクリックしてゲームをプレイします。 これで、マップされたダッシュ キー (Caps Lock) を押しながら移動すると、ダッシュできるようになります。
プレイヤー キャラクターでさまざまな Max Walk Speed と Sprint Movement Speed の値を試し、ゲームに最適な値を決定します。 これでプレイヤーは走ることができるようになったので、BP_Enemy キャラクターを再確認して Max Speed 値を増やし、Hallway 3 と Room 3 のエンカウンターの難易度レベルを調整できるようになりました。
また、このチュートリアルで実装した内容を拡張し、他の機能をゲームに追加したい場合は、新しい入力や動作を引き続き追加することも可能です。
次の内容
プレイヤー キャラクターのすべてのメカニックと機能を正常に追加できたので、レベルを完成させる準備が整いました。 このシリーズの最終モジュールでは、これまでに構築したすべての要素を使用してレベルに仕上げを行います。