執筆バージョン: Unreal Engine 5.1
|
ゲームの実行中にBPからメッシュの色を変更するには主に2つの方法があります。
- Dynamic Material Instanceを使う
- マテリアルパラメーターコレクションを使う
それぞれの使い方を解説します。
また、本記事ではゲームメーカーズから配布されているフリーアセットを使用しています。
※特に使わなくても問題はありません。僕が使いたかっただけです。
ゲームメーカーズに登場するキャラクター「キーボー」「ムラスケ」の3Dモデルデータを配布します。キャラクター設定も明らかに!
Dynamic Material Instanceを使う
ブループリントには「Create Dynamic Material Instance」ノードがあります。(関連記事 [UE4]Material Instanceの基本的な使い方)
これを使用すると、プレイ中に別のマテリアルをメッシュに割り当てることが出来ます。
準備
テスト用にマテリアルとブループリントアクタを作成します。

マテリアル
新規で赤いマテリアルを作りました。
ひとつ注意点として、スケルタルメッシュに割り当てるマテリアルは「Used With Skeletal Mesh」にチェックを入れる必要があります!


以上でマテリアルの設定は終わりです。
BPを仕込むアクタ
- 最低限のブループリントアクタを追加
- 名前を「BP_Keybo」に変更
- スケルタルメッシュコンポーネントを追加

SkeletalMeshコンポーネントを追加
- フリーアセットのキーボーを割り当て

SK_Keyboを設定
マテリアルが切り替わる処理
ノードを使用して「1秒後にマテリアルが切り替わる」ようにしてみます。
BeginPlayイベントにノードを作成しましょう

結果

マテリアルパラメーターコレクションを使う
- マテリアルアセットの仲間に「Material Parameter Colleciton」というものがあります。
- これを使用するとマテリアルの情報をブループリントで書き換えることが出来ます。
準備
テスト用に3つのアセットを作成します
- マテリアルパラメーターコレクション
- キーボーのマテリアルを複製したもの
- BPを仕込むアクタ
まず Material Parameter Collecitonを作成します。

このアセット名は「MPC_Test」としました。
作ったアセットを開いて値を登録しておきます。

続いてマテリアルを作成します。
キーボーのマテリアルを複製してもうひとつマテリアルを作ります。
なぜ複製するかというと、パラメーターコレクションを使って色を変更するにはマテリアルの中にノードを仕込む必要があるからです。
アセット名は「MT_Keybo_02」としました。
マテリアルの中身を編集します。
MPC_Testの値をマテリアルの中で呼び出します。

「Collection Parameter」をクリックするとノードが生成されます。
こちらを選択すると詳細欄で「MPC_Testのどのパラメーターをノードから出力するか」を選ぶことが出来ます。

マテリアルのノードはこのように組みました。

このマテリアルも忘れずに「Used with Skeletal Mesh」にチェックを入れておきましょう。

以上でマテリアルの編集は終わりです。
BPを仕込むアクタを作成
BP_Keyboを複製し「BP_Keybo_02」を作成します。
アセットを開き、Skeletal Meshには新たに作ったマテリアルを割り当てておきましょう。

マテリアルが切り替わる処理
BeginPlayイベントにBPを組みました。
「Set Scalar Parameter Valueノード」に指定した値は下記のようになってます。
- Collection – 作成したマテリアルパラメーターコレクションを設定
- Parameter Name – ColorAlphaを設定
- Parmeter Value – 1.0と入力

これで「1秒後にマテリアルパラメーターコレクションの値を書き換える」という処理が出来ました。
結果

注意点
両方とも結果は同じですが、場合によって適切な方を使いましょう。
大きくは下記のように考えておくと良いでしょう。
- アクタそれぞれのマテリアルを切り替えたいときは、Material Dynamic Instanceを使う。
- 複数のマテリアルを一括で切り替えたいときは、Material Parameter Collectionを使う
まとめ
いかがでしたか?
今回はメッシュの色を変える方法を紹介しました。
これでゲーム中に色をバンバン変えまくって色鮮やかなゲームを作ってみてください!