この説明では、スポットライトからの直接光のみ影響を与えます
メッシュ距離フィールドの生成にチェックが入っていることを確認してください。
考え方
当てられた光=スポットライトの範囲内にライントレースを実行して光を再現
1スポットライトの範囲内にライントレースを実行
2ヒットした場所でアクタを表示
3アクタの場所のマテリアルの透明度を変える
作成するアセット
作り方
MI_illuminated 異なるTextureを使用可能にする
コンテンツブラウザからM_illuminatedで右クリックし、マテリアルインスタンスを作成
詳細から
Paramにチェックを入れて、使いたいTextureをセットしましょう
BP_LightTrace 照らされた場所にBP_Hitを表示する
親クラスをActorでBPを作成
コンポーネント→追加からSpotLightとArrowを追加
変数をこのように追加します
上から6番目のVector and Child
は変数のタイプをマップにして、
マップの値タイプをChild Actor Componentにして下さい
入力可能な変数の説明(ライトの範囲とBP_Hitの範囲を可視化し、BP_Hitの中心にArrowを追加してテストしました)
これ以外のものは値の入力不可能です。
ノードの組み方
BeginPlayから
Add Child Actor ComponentノードのChild Actor ClassはBP_Hitにしてください
Relative Transform LocationのYが1111.0となっていますが、0で大丈夫です。
折りたたんでいたノード1
折りたたんでいたノード2
極座標のθをConeAngleとして、変数の値を変更してもBP_Hitが全てConeAngle内に入るようにNum_Rings分のリングを計算しています。
そして更新用にこれを追加してください。
カスタムイベント「Update」は詳細からエディタで呼び出すにチェックを入れておきましょうBeginPlayからのノードの全体像
変数値をテストする方法
レベルにBP_LightTraceを配置し、詳細のデフォルトから変数値を変更し、
1-Update Vector BeginPlayからの処理(入力された値でベクトルを再計算)
2-Trace Tickからの処理(ライントレースを実行し、BP_Hitを配置)
の順で押すとテスト出来ます。
使い方
ライトを持たせたいアクタのコンポーネント→追加からChildActorを追加
詳細のChildActorClassを作成したBP_LightTraceに変更
BP_TopDownCharacterに持たせる場合
分からない点があれば聞いてください
参考
https://youtu.be/N_pq2RYTG04