Unity+UnrealEngine4+Blog.

UnityやUnrealEngine4とかについて学習したことを書いてます

UE4 モブの車を自動で走らせる -3(車体の色をランダムで変える)

 関連記事

nabesi777.hatenablog.com

 

nabesi777.hatenablog.com

 

 

モブの車の色をランダムで変更する内容です。

モブの車は複数台走っていることが多いので、同じ色の車より色を変えていったほうがそれっぽくなります。

 

まずはマテリアルを作成します。

f:id:nabesi777:20190907173252p:plain

 

作成したものを開き、VectorPrameterノードを作成>これをBaseColorへ繋げます。

ノードの名前は後で使用するので

わかりやすいものにします。今回はMyColorです。

f:id:nabesi777:20190907173439p:plain

 

次にBP_MyMobcar(色を変えたいアクタのブループリント)へ移動して、その中のConstractionScriptに移動してDynamicMaterialInstanceというものを作成していきます。

 

まずは変数の準備

MaterialInstance型の変数を作成

f:id:nabesi777:20190907173855p:plain

 

次にコンポーネントのSkeltalMeshをドラッグして参照し、そこからラインを伸ばしてCreateDynamicMaterialInstanceをいうノードを出します。

f:id:nabesi777:20190907174153p:plain

 

ここまでできたら、色を変更するマテリアルを設定します。

BP_MyMobcar>SkeltalMesh>Materials(下の画像の場所)今回色を変えたい場所はElement2の場所でしたので、ここに先ほど作成したマテリアルを入れます。

 

これを

f:id:nabesi777:20190907174232p:plain

 

こう

f:id:nabesi777:20190907174456p:plain

 

(なんとなく元のアセットのマテリアルをなるべく触らないように変えました)

 

そしてConstructionScriptに戻って、ElementIndexを「2」に設定をして作成したMaterialInstance型の変数へセット

f:id:nabesi777:20190907174933p:plain

 

次はイベントグラフに戻って作業します。

Color型の変数を準備します。(今回は3つの色からランダムで選択するようにしました)

f:id:nabesi777:20190907175206p:plain

 

f:id:nabesi777:20190907175310p:plain

 

これらの色がランダムで表示(今回はゲーム再生のタイミングで色を変化させる)

されるようにイベントグラフへノードを組んでいきます。

 

先ほど作成した変数を配列の中へ入れます。

f:id:nabesi777:20190907175537p:plain

f:id:nabesi777:20190907175656p:plain

 

そして以下のようにノードを組みます

f:id:nabesi777:20190907180042p:plain

 

これでゲームをスタートするたびに車の色が変化するようになりました。

f:id:nabesi777:20190907180201p:plain

f:id:nabesi777:20190907180224p:plain

 

今回作成した内容は色を変えるだけですが、

モデルを複数台用意し、メッシュとそれに合わせたタイヤアニメーションを同じような感じで変えてあげるともっと良しです!(それも作ったんだけど、めんどいので気が向いたらざっくり書こう・・)

 

 

次はランダムでスポーンするやり方を書いていきます!