Language:
Page Info
Engine Version:

1.1 - HUD のサンプル

このサンプルはゲーム内の簡易な HUD を実演するもので、簡単なポーズ (一時停止) メニュー形式でクリック可能なボタンを含みます。オブジェクティブ (目標物) の名前とプレイヤーからの距離と共に、オブジェクティブ上にオブジェクティブ マーカーが描画されると同時に、HUD にはヘルスバーマテリアルが描画されて、キャラクターからのヘルス値の受け取りに Blueprint Interface 関数を使用します。 HUD ブループリントを検索するには [コンテンツ ブラウザ] で BP_HUD_Example を検索してください。

GameMode クラス

GameMode ではゲーム固有のゲームプレイ動作や設定に加え、デフォルトの Pawn クラス、HUD クラス、PlayerController クラスを設定します。このサンプルでは、 GameInfo_HUD ブループリントは、HUD クラスとして BP_HUD_Example ブループリントを設定する GameMode ブループリントです。[World Settings (ワールド設定)] タブで GameMode Override (ゲームモードのオーバーライド) として設定しなくてはいけません。

gamemode_hud.png

HUD (Heads Up Display: ヘッドアップ ディスプレイ)

HUD の各エレメントを描画するために使用する ReceiveDrawHUD Event はスクリーンサイズを表す X と Y 値を提供します。この値はゲームのスクリーンサイズに従い、 様々な HUD エレメントのスケーリングまたは再配置を可能にするためブループリント全体へ取り込まれます。例えば、解像度に関係なく、ボタンを常にスクリーン中央へ表示させます。

ヘルスバー

BP_HUD_healthbar.png

ヘルスバーは HUD ブループリントのコンストラクション スクリプトで作成する動的マテリアル インスタンスです。マテリアルには Current Health と Maximum Health のスカラー パラメータに応じてヘルスバーの長さを変更するノードがあります。 HUD ブループリントはキャラクターの現在のヘルス状態に基づいて Current Health パラメータを更新します。

ピックアップ アイテム

BP_HUD_pickup.png

このレベルでオブジェクティブ (目標物) となるピックアップ アイテムは BP_Pickup_Child_Health で、 子ブループリント のコンテンツ サンプルでも取り上げています。Level ブループリントで Objective 変数として設定します。

HUD ブループリントで Current Objective が NULL ではない場合、

  • オブジェクティブ マーカーは Project 関数を使用して、3D 位置ベクター (オブジェクティブの位置を表す) を 2D スクリーン座標へ変換します。 これにより座標上に描画されるオブジェクティブのラベルとアイコンは、画面上で常にオブジェクティブのアクタ周辺に表示されます。

  • テキストは Get Text Size ノードを利用してオブジェクティブの中央に表示されます。このノードは、文字列が HUD 上に描かれると、使用するフォントとテキストのスケーリングを考慮しながら予想される文字列の高さと幅を計測します。 テキストは左寄せがデフォルト設定で座標は左上となるため、テキストを中央揃えにするためにこれらの座標へオフセットを追加するにはこのノードが役立ちます。

一時停止メニュー

BP_HUD_menu.png

プレイヤーが [M] を押すと一時停止メニューが開きます。その後、PlayerController ブループリントが Toggle Menu 関数のインターフェイス メッセージを実行します。この関数は、 オブジェクティブのピックアップ アイテムとプレイヤーキャラクターのヘルスを取得する関数と共に BPI_HUD_Interface_Events ブループリント インターフェイスで定義されます。

一時停止メニュー表示には以下の重要な特徴があります。

  • カスタム関数: Draw Button という名前のカスタム関数は、ボタンに必要なすべてのコンポーネントの描画に便利な方法です (ボタンのテクスチャ、ボタンのテキスト、ヒットボックス) 。 単一の関数ノードで何度でも必要なだけ再利用出来ます。スクリーン座標値やオフセットなどの決定に多くの計算ノードを必要とするため、HUD には特に有益な方法です。 この関数は値やオフセットを格納し、簡単に再利用できます。

  • ヒットボックス:DrawButton 関数内の Add Hit Box 関数は、マウスのクリック動作やスクリーン上のある特定領域でマウスが解放された動作を検知する簡易な方法です。ヒットボックスの位置とサイズに加え、 名前の指定も可能です。メイン イベントグラフの一般的な ReceiveHitBoxClick event はヒットボックスがクリックされると発行し、ヒットボックスの名前を出力します。その後出力された名前に従って Switch on Name ノードが実行フローを命令します。

プレイヤー コントローラー

BP_HUD_pressM.png

BP_PlayerController_HUD ブループリントはこのサンプルで使用するデフォルト PlayerController クラスです。 GameInfo_HUD GameMode ブループリントでも設定されます。「Press "M" for Menu」 の文字列は BP_HUD_Example ブループリントで設定されますが、 実際には [M] キー押下時の最初の応答は、PlayerController ブループリントが設定します。

[M] キーを押すと、ターゲットとして HUD ブループリントと一緒に Toggle Menu インターフェイス メッセージが実行されます。その後 PlayerController は、以下を行います。

  • Show Mouse Cursortrue に設定

  • Enable Click Eventstrue に設定

  • PlayerController を有効にして HUD へ入力データを送信

  • ゲームを一時停止