このセクションでは、プレイヤー キャラクターに足音を追加して、レベル内を走り回る際のリアルさを向上させます。 サウンド キューを使用して、プレイヤーが歩くサーフェスの種類に基づいて異なるサウンドを作成します。
サーフェス タイプを表現する物理マテリアルを作成します。 たとえば金属の上を歩くときは、石の上を歩くときとは異なる音をさせる必要があります。サーフェスとサウンドの情報を保持するカスタム データ アセットも作成します。 データ アセットを使用すると、ブループリントのコードを変更することなく、後からサーフェスのタイプやサウンドを簡単に追加することができます。
最後に、ブループリント関数ライブラリに、ゲーム内にすでに存在している関数(BPL_FPGame) を作成します。 この関数は、検出されたサーフェス タイプに基づいて適切なサウンド エフェクトを返すデータ アセット内の関数を呼び出します。
開始する前に
以下のトピックは、「パズル アドベンチャー ゲームのアート パス」および新規ユーザー向けの Unreal Engineの以前のセクションで取り上げられた内容です。内容を理解していることを確認してください。
サウンド キュー アセットおよびサウンド減衰アセットを作成します。
変数や関数の作成、ノードの作成と接続など、ブループリントの基礎について説明します。
サンプル プロジェクトとコンテンツ パックでは、次のアセットを使用します。
S_Metal-1 サウンド ウェーブ
S_Metal-2 サウンド ウェーブ
S_Metal-3 サウンド ウェーブ
S_Stone-1 サウンド ウェーブ
S_Stone-2 サウンド ウェーブ
S_Stone-3 サウンド ウェーブ
S_DefaultStep-1 サウンド ウェーブ
S_DefaultStep-2 サウンド ウェーブ
S_DefaultStep-3 サウンド ウェーブ
BPL_FPGame ブループリント関数ライブラリ
BP_AdventureCharacter ブループリント
ABP_Unarmed アニメーション ブループリント
フットステップ サウンドを使用してサウンド キューを作成する
まず、金属の上に乗った足音と、石の上に乗った足音用の 2 つのサウンド キューを作成します。
サウンド キューを作成するには、次の手順を実行してください。
コンテンツ ブラウザに移動し、[AdventureGame] > [Artist (アーティスト)] > [Audio (オーディオ)] を選択します。
[Audio (オーディオ)] フォルダを右クリックして [New Folder (新規フォルダ)] を選択し、「Footsteps」と名前を付けます。
[Footsteps (フットステップ)] フォルダで右クリックし、[Audio (オーディオ)] > [Sound Cue (サウンド キュー)] を選択します。 これに「SC_Footsteps_Metal」という名前を付けて開きます このアセットには、接続されているノードに基づいてサウンドを再生する Output ノードがあります。
グラフ内の任意の場所を右クリックし、Wave Player ノードを追加します。
Wave Player ノードを選択し、左側のパネルを使用して、サウンド ウェーブ を「S_Metal-1」に変更します。
Wave Player ノードをさらに 2 つ追加し、ステップを繰り返して、「プロジェクトを設定してコンテンツをインポートする」でインポートした S_Metal-2 と S_Metal-3 サウンド ウェーブ ファイルを選択します。
グラフ内で右クリックして、Random ノードを追加します。 Random ノードのAdd inputを 1 回クリックし、3 つ目の入力を追加します。
それぞれの Wave Player ノードを Random ノードのピンに接続します。
Random ノードを Output ノードに接続します。
サウンド キューを保存します。
次に、2 つのサウンド キュー アセットを作成します。1 つは石のフットステップ サウンドをランダム化するもので、もう 1 つはデフォルトのフットステップ サウンド用です。
「SC_Footsteps_Stone」という名前のサウンド キューアセットを作成します。
Wave Player の各ノードで S_Stone-1、S_Stone-2、 「プロジェクトを設定してコンテンツをインポートする」でインポートした S_Stone-3 オーディオ アセット。
SC_Footsteps_Default という名前のサウンド キューアセットを作成します。
Wave Player ノードには、S_Default-1、S_Default-2、および S_Default-3 オーディオ アセットを使用します。
物理マテリアルを作成する
サウンド キューを作成したので、それぞれのサーフェス タイプを表す 2 つの物理マテリアル を作成します。 後でフットステップ サウンドをこれらの物理マテリアルに一致させます。
物理マテリアルは、物理オブジェクトがワールドと動的にインタラクションする際の応答を定義するために使用されます。 これらのマテリアルは、ゲームプレイ中に異なるタイプのサーフェスを識別するために使用することもできます。
たとえば、このチュートリアルでは、金属と石のサーフェスを表現するために PM_Metal と PM_Stone という名前の物理マテリアルを作成します。 次にプレイヤーが歩いている地面を確認し、その情報に基づいてサウンド キューを再生します。
フィジカル マテリアルを作成するには、次の手順を実行します。
コンテンツ ブラウザに移動し、[AdventureGame] > [Artist (アーティスト)] > [Materials (マテリアル)] フォルダに移動します。
[Materials (マテリアル)] フォルダで右クリックし、[Physics (物理)] から [Physical Material (物理マテリアル)] を選択します。
[Pick Physical Material Class (物理マテリアル クラスを選択)] ウィンドウで、PhysicalMaterial を選択します。
アセットに「PM_Metal」という名前を付けます
「PM_Stone」という名前の物理マテリアルをもう 1 つ作成します。
物理マテリアルはデータ アセットで、摩擦などサーフェスのさまざまな設定を変更するために使用できます。 これらの物理マテリアルについては、アセット自体でプロパティを編集する必要はありません。 代わりに、これらのアセットを異なるマテリアルに割り当てて、個々のサーフェス タイプを変更してください。
データ アセット ブループリント クラスを使用してフットステップ サウンドを割り当てます。
次に、フットステップ サウンドを保持する新しいブループリント データ アセットクラスを作成し、オブジェクトのマテリアルに割り当てられた物理マテリアルに基づいて正しいフットステップ サウンドを返す関数を作成します。
フットステップ サウンドを制御するためのブループリント データ アセットを設定するには、次の手順を実行します。
コンテンツ ブラウザで、[AdventureGame] > [Artist (アーティスト)] > [Audio (オーディオ)] > [Footsteps (フットステップ)] フォルダに移動します。
右クリックして、ブループリント クラスを作成します。
[Pick Parent Class (親クラスを選択)] ウィンドウで [All Classes(全てのクラス) ] ドロップダウンを展開し、PrimaryDataAsset を検索して選択します。
このアセットに BP_DA_FootSteps という名前を付けて開きます。
[My Blueprint (マイ ブループリント)] パネルで、新しい変数を追加します。
「FootStepSounds」という名前を付けます
それを選択し、[Details (詳細)] パネルで
変数タイプを [Physical Material (オブジェクト参照)] に変更します。
コンテナを「Map」に変更します。
「Map Value Type」を「Sound Cue (Object Reference)」に変更します。
デフォルトの変数型は Boolean です。 Boolean をマッピングできないため、最初に変数の型を変更しないと Map コンテナは使用できません。
もう一つ変数を追加:
「DefaultFootSteps」と名付けます。
そのタイプをサウンドキューに変更します。
デフォルトのフットステップ サウンドにはサウンド キューが 1 つだけあり、オブジェクトのマテリアルに物理マテリアルが割り当てられていない場合にのみ再生されるので、そのコンテナのタイプを単一の変数に変更することができます。
マップ変数は、ある種類のアセットを別の種類のアセットにリンクするデータペア リストです。 FootStepSounds 変数は、それぞれの物理マテリアルを対応するサウンド キューにマップします。
FootStepSounds を設定してマテリアルとサウンドをリンクするには、次の手順を実行します。
ブループリントをコンパイルし、変数のデフォルト値を編集できるようにします。
FootStepSounds 変数を選択します [Details (詳細)] パネルの [Default Value (デフォルト値)] で新しい要素を追加します。
[Physical Material (物理マテリアル)] フィールドで、PM_Stone アセットを選択します。
[Sound Cue] フィールドで SC_Footsteps_Default アセットを選択します。
上記の手順を繰り返し、PM_Metal と SC_Footsteps_Metal が割り当てられた要素を追加します。
FootStepSounds 変数を選択します。 [Details (詳細)] パネルの [Default Value (デフォルト値)] で SC_Footsteps_Default を追加します。
ブループリント ロジックを構築するには、次の手順に従ってください。
[My Blueprint] パネルで、「fnGetFootStepSounds」という名前の新しい関数を追加します。 独自のグラフとともに新しいタブで開きます。
関数を選択し、[Details (詳細)] パネルで以下の操作を行います。
「PhysicalMaterial」という名前で Physical Material というタイプの 入力を追加します。
新しい出力を「SoundCue」という名前で追加し、タイプを Sound Cue に設定します。
グラフで、関数エントリ ノード (fnGetFootStepSounds) と Return ノード間のワイヤーを切断します。
関数グラフ内で FootStepSounds 変数をドラッグし、Get を選択します。
Foot Step Sounds ノードのピンをドラッグし、Find ノードを追加します。
Find ノードの 2 番目の入力ピンを fnGetFootStepSounds ノードの Physical Material (物理マテリアル) ピンに接続します。 これは先ほど追加した入力のパラメータです。
fnGetFootStepSounds ノードで、そのexec ピンをドラッグし、Branch ノードを追加します。 Condition ピンを Find ノードの下 (赤) の出力ピンに接続します。
Branch ノードから True ピンを Return ノードに接続します。
Return ノードから Sound Cue ピンをドラッグし、Find ノードの上部 (青色) の出力ピンに接続します。
Branch ノードから False ピンをドラッグし、別の Return ノード を追加します。
新しい Return ノードで Sound Cue ピンをドラッグし、Get Default Foot Steps ノードを追加します。
ブループリントをコンパイルして保存します。
この関数は、物理マテリアル (関数入力) が FootStepSounds マップで見つかったかどうかを確認するものです。 物理マテリアルが見つかると、関数はその物理マテリアルに関連付けられているサウンド キューを関数の出力変数として返します。
物理マテリアルが見つからない場合、代わりに DefaultFootSteps サウンド キューが返されます。
デフォルトのフットステップ サウンドを設定
次に、ブループリントで使用する値を管理するためのデータ アセットを作成します。 このアセットは設定レイヤーとして機能し、ブループリントを変更または再コンパイルすることなく、物理マテリアルとサウンド キューを追加、削除、またはアップデートできます。 次の手順を実行します。
コンテンツ ブラウザで、[AdventureGame] > [Artist (アーティスト)] > [Audio (オーディオ)] > [Footsteps (フットステップ)] フォルダに移動します。
右クリックして、[Miscellaneous (その他)] > [Data Asset (データ アセット)] を選択します。 円形のアイコンを持つデータ アセット タイプを選択します。
データ アセット インスタンスとして BP_DA_FootSteps データ クラスを選択します。
このアセットに「DA_FootSteps」という名前を付けて開きます。
Default Foot Steps (デフォルトのフットステップ) で SC_Footsteps_Default を選択します。
Foot Step Sounds を展開し、リストに両方の FootStepSounds マップ要素が入力されていることを確認します。
データ アセットを保存します。
フットステップ サウンドを再生する関数を作成する
次に、足音を再生するための関数を関数ライブラリに作成します。 プロジェクト内の全てのブループリント クラスは、ブループリント関数ライブラリの関数を使用することができます。
新しい関数を作成し、設定するには、次の手順を実行します。
コンテンツ ブラウザで [AdventureGame] > [Designer (デザイナー)] > [Blueprints (ブループリント)] > [Core (コア)] の順に移動し、BPL_FPGame ブループリント関数ライブラリを開きます。
My Blueprint パネルで新しい関数を追加し、「fnBPLPlayFootStepSound」という名前を付けます。
新しい関数を選択し、[Details (詳細)] パネルで、Pawn 型の「PlayerReference」という名前の新しい入力を追加します。
プレイヤーと地面との間にライン トレースを設定するには、次の手順を実行します。
fnBPLPlayFootStepSound ノードの exec ピンからドラッグし、Line Trace By Channel ノードを追加します。
Line Trace By Channel ノードの Start ピンをドラッグして、Get Actor Location ノードを追加します。
ノード アクション リストで、ノードが見つからない場合は、[Context Sensitive (状況依存)] を無効にします。
Get Actor Location ノードの Target ピンをドラッグし、Get Player Reference ノードを追加します。
Get Player Reference ノードの出力ピンをドラッグし、Make Array ノードを追加します。
Make Array ノードの配列出力ピンを Line Trace By Channel ノードの Actors to Ignore ピンに接続します。
Get Actor Location ノードから、Return Value ピンをドラッグして Subtract ノードを追加します。
Subtract ノードの出力ピンを Line Trace By Channel ノードの End ピンに接続します。
Subtract ノードで Z 値を 500 に設定します。
これは、プレイヤーのキャラクターを無視して、プレイヤーの位置から 500 ユニット下向きにラインをトレースします。 次のセクションでは、ライン トレースによって報告されるサーフェス タイプに基づいて正しいフットステップ サウンドを割り当てます。
次の手順に従って、先程作成したデータ アセットを使用して適切なフットステップ サウンドを割り当てます。
Line Trace By Channel ノードから Out Hit ピンをドラッグし、Break Hit Results を選択します。
ローカル変数を作成し、「FootStepsAsset」という名前を付け、そのタイプを「BP_DA_FootSteps (Object Reference)」に設定します。 その [Default Value(デフォルト値)] を「DA_FootSteps」に設定します。
FootStepsAsset 変数をイベント グラフにドラッグし、Get FootStepAsset を選択します。
FootStepsAsset ノードからドラッグし、fnGetFootStepSounds を検索して選択します。
LineTraceByChannel ノードの Exec ピンを FnGetFootStepSounds ノードに接続します。 Break Hit Results ノードを展開し、Phys Ma ピンを FnGetFootStepSounds ノードの Physical Material ピンに接続します。
FnGetFootStepSounds ノードからドラッグし、Play Sound At Location を検索して選択します。
PlaySoundAtLocation ノードの Sound ピンを FnGetFootStepSounds ノードの Sound Cue ピンに接続します。
PlaySoundAtLocation ノードの Location ピンをドラッグし、Get Actor Location を検索して選択します。 その Target ピンをドラッグし、Get Player Reference ノードを追加します。
この関数を保存してコンパイルします。
これはデータ アセット関数 fnGetFootStepSounds を使用し、物理マテリアルを渡し、再生するサウンド キューを取得します。
アニメーション ブループリントをステップ サウンドでアップデートする
次のステップでは、キャラクターの両足が地面に着いたときに FnBPLPlayFootStepSound 関数を呼び出すように、プレイヤー キャラクターの アニメーション ブループリント を変更します。
このプロジェクトで使用されているキャラクターのように、ほとんどの Manny キャラクターはデフォルトで通知を含むアニメーションを使用しています。 アニメーション通知 (Animation Notifies または単に Notifies とも呼ばれる) では、アニメーション シーケンスに同期した繰り返し可能なイベントを作成できます。 これらのイベントは、サウンド (歩行または走行アニメーションのフットステップなど)、スポーンされたパーティクルなどである可能性があります。
通知はアニメーション シーケンスに追加できますが、Unreal Engine テンプレートに付属するほとんどのロコモーション アニメーションには、キャラクターの足が地面に着地するタイミング (FootPlant) に一致するデフォルトのアニメーション通知が含まれています。
デフォルトのアニメーション通知を確認するには、次の手順を実行します。
コンテンツ ブラウザで、プレイヤー キャラクターが使用するアニメーション ブループリントを開きます。 サンプル プロジェクトの BP_AdventureCharacter は、[Content (コンテンツ)] > [Characters (キャラクター)] > [Mannequins (マネキン)] > [Anims (アニメーション)] > [Unarmed (非武装)] に移動し、ABP_Unarmed を開きます。
右上隅の [Animation (アニメーション)] ボタン (緑色の走る人物のアイコン) をクリックします。 これにより、Unreal Editor の新しいタブでブループリントのアニメーションの 1 つが開きます。
再生中のアニメーションを変更するには、[Animation (アニメーション)] ボタンの横にある 3 つの点をクリックして、任意の歩行または走行アニメーションを選択してください。 たとえば、MF_Unarmed_Jog_Fwd です。
ヒント:コンテンツ ブラウザから直接ジョグ アニメーションを開くことも可能です。
タイムライン、Footplant 通知が表示されます。
新しい通知を追加したり、既存の通知を変更したりして、一連のイベントを実行する独自のシステムを作成することができます。 このチュートリアルでは、キャラクターのアニメーションに付属するデフォルトの通知を使用します。 AN_FootPlant_Right と AN_FootPlant_Left という名前です。
ブループリントにアニメーションの通知を追加してフットステップ サウンドを再生するには、次の手順に従ってください。
ABP_Unarmed に戻ります。
イベント グラフを右クリックし、AnimNotify_AN_FootPlant_Left ノードを追加します。
Notify ノードのピンからドラッグし、FnBPLPlayFootStepSound を検索して選択します。
AnimNotify_AN_FootPlant_Right ノードを追加し、これを FnBPLPlayFootStepSound ノードの exec 入力ピンに接続します。
FnBPLPlayFootStepSound ノードから、Player Reference ピンをドラッグし、Get Player Pawn ノードを追加します。
アニメーション ブループリントをコンパイルして保存します。
これにより、フット プラントの通知がアニメーション ブループリントからトリガーされるたびに、足音のサウンドが再生されるようになります。
キャラクターが追加のアニメーション ブループリントを使用する場合、それらのアニメーション BP にもコードを追加する必要があります。
フットステップ サウンドを再生できるようにプレイヤー キャラクターのブループリントをアップデートする
次にプレイヤーのブループリントを変更し、プレイヤーが落下した後やジャンプした後の着地など、地面に着いたときにサウンドを再生するロジックを追加します。 ブループリント関数ライブラリに FnBPLPlayFootStepSound 関数を作成したので、プレイヤー キャラクターのブループリントでその関数を再利用できます。
プレイヤーのブループリントを修正するには、次の手順に従います。
コンテンツ ブラウザを開き、[AdventureGame] > [Designer (デザイナー)] > [Blueprints (ブループリント)] > [Character (キャラクター)] フォルダに移動します。
BP_AdventureCharacter ブループリントを開き、EventGraph (イベント グラフ) タブに移動します。
グラフの空白の領域を右クリックし、Event On Landed ノードを追加します。
EventOnLanded ノード の exec ピンをドラッグし、「FnBPLPlayFootStepSound」を検索して選択します。
FnBPLPla FootStepSound ノードから Player Reference ピンをドラッグし、Self ノードを追加します。
ブループリントをコンパイルして保存します。
フロアに物理マテリアルを割り当てます。
次に、物理マテリアルを複数のサーフェスに割り当てます。 次の手順を実行します。
レベルでフロア オブジェクトなどのサーフェスを選択します。
[Details (詳細)] パネルの [Collision (コリジョン)] セクションで、[Phys Material Override (物理マテリアルのオーバーライド)] を前に作成した物理マテリアルの 1 つに変更します。
これらの手順を繰り返して、両方の物理マテリアル タイプをレベルのフロアの一部に追加します。
または、以下の手順を実行して物理マテリアルをマテリアル インスタンスに追加することもできます。
マテリアル インスタンスを開き、[Details (詳細)] パネルに移動します。
[General (全般)] セクションまで下にスクロールし、[Phys Material (物理マテリアル)] ドロップダウンをクリックして、目的の物理マテリアルを選択します。
マテリアル インスタンスを保存します。
フットステップをテストする
ゲームをプレイし、物理マテリアルが適用されているサーフェスの上を歩いてジャンプすると、正しいフットステップのサウンドが聞こえます。
サーフェスに物理マテリアルが割り当てられている場合は、対応するフットステップのサウンドが聞こえます。 物理マテリアルが見つからない場合は、デフォルトのフットステップのサウンドが聞こえます。
次の内容
次のモジュールでは、Niagara VFX システムを使用して、ファイア エフェクトのビジュアル エフェクトを作成し、それをトラップに適用する方法を学習します。