UE4 覚え書き BPにてマテリアルを変化させる
UdemyのUE4のコースに出てきたキャラクターがアクターに接触するとアクターの色が変化するという処理をちょっとアレンジしてまとめました。
触ると色が変化(発光)します。
マテリアルの準備
エミッシブカラー(発光色)にMultiplyノード(乗算)を繋げ、「A」にConstans4Vectorノードで赤い色を、「B」にScalarParameterノードを繋げる。
ScalarParameterは他のBPからの制御によって値が変化するので、値によって赤い発光具合が変化する。
マテリアルインスタンスの作成
まずはBPクラスで今回発光させるアクター(今回は円柱)を作成する必要がある。
更に、マテリアルの内容をBPでコントロールする場合は、マテリアルインスタンスを作成する必要がある。
- Create Dynamic Material Instance
Targetとなるのは今回発光させようとしている円柱のアクター(En Cyuu)
Return Valueからは「Promote to variable(変数に昇格)」で変数にする必要があるようです。(今回は「Henka MID」という変数にしてます)
キャラクターとの接触判定⇒マテリアルに変化を加える
- Cast to ThirdPersonCharacter
Event Hitの「Other」の中には円柱にヒットしたアクターの情報が入っているので、Cast to~ノードを使用してThirdPersonCharacter(プレイヤーキャラ)かどうかの判定を行い、判定が「真」の場合のみ次の処理工程に進む。
タイムライン内の情報はスカラーパラメーターに渡される数値が入っています。
インスタンス化したマテリアルに変化を加えるため、「Henka MID」をゲットしてきて、そのスカラー値に変化を加えたいので、Set Scalar Parapeter Valueノードを作成、Valueをタイムラインからの出力を繋げるとタイムラインの数値変化をスカラー値に渡すことが出来る。
- Set Scalar Parapeter Value
注:Parameter Nameの欄は、変化を行いたいマテリアルのスカラーパラメーターの名称と同じに合わせておく必要がある。