Switchノードを試します(^^♪
今回はUE5.2から追加された、
Switchノードに設定されたSwitchParamで設定された値に、
合わせて渡すマテリアル情報が変化するノードを紹介します。
※UE5.3を使用して説明していこうと思います。
※書き間違え等あればコメントください!
Switchノードの説明
Switchノードとは上記でも説明した通り、
SwitchParamで設定された値に合わせて渡すマテリアル情報が変化する、
Enumに似たマテリアル用のノードになります。
IFなどのノードに似たような使い方をするかと思います。
マテリアルグラフで右クリックして検索に「sw」と入れると、
Switchノードが候補として出てくるので選択します。
実際にノードを設定するとSwitchノードが作成されます。
ノードの詳細で設定できる値などを紹介します。
Description → ノード名
Const Switch Value → Switchでの初期の値
Const Default → Switchのデフォルト値
※分岐に当たらない値の場合はデフォルト値が適応
Inputs → 各分岐で+ボタンで追加してゴミ箱で分岐を削除できます。
Input Name → 分岐ごとの分岐名
※Defaultが-1の場合はInput[0]がSwitchValueが0になる。
なのでDefaultが0の場合はInput[0]が1になります。
実際にInputsで+ボタンを選択してInputNameを設定すると、
Indexが増えてそれに合わせて接続点が増えSwitchできる種類を増やせます。
SwitchValueは値の1ごとに区切られています。
小数点ありの場合は小数点を無視した整数の値で区切られます。
設定したそれぞれの値に合わせて色が変化するようになります。
※Switchノードはすべての接続点に接続していないとエラーになります。
すべての接続点にちゃんと接続してあげてください。
MaterialInstanceを作成してSwitchParamを変更して、
Switchの表示がどのように切り替わるか動画にしてみました。
ScalaParamでSwitchを切り替える
BPでキャラクターのLineTraceに当たった時に、
ScalaParamを切り替える処理を作って動的に変えてみたいと思います。
そのために先ほど作成したマテリアルからMaterialInstanceを作成します。
まずキャラクター側でLineTraceを飛ばす処理を作ります。
キャラクターからカメラの方向に向かって飛ばす処理になります。
LineTraceに当たった指定のActorの色を変更してます。
続いてLineTraceに当たった時に値をランダムに変更する処理を作ります。
処理としてはLineTraceの当たった時のカスタムイベントを作成して、
MaterialInstanceを作成してその中のScalaParameterを、
-1~2のランダム数値を渡すというものになります。
実際にLineTraceを飛ばして色を変えてみたのがこちらになります。
白いボックスの色がランダムに切り替わるのが分かるかと思います。
これでSwitchノードの説明を終了します。
何か分からない部分等ありましたらコメントぜひお願いします!