はじめに
今回はShader GraphでのUVスクロールのやり方を扱っていきます。基礎中の基礎的な内容なのですが、何かと必要になる機会があると思いますし、私自身まだまだShader Graphの機能を使いこなせていないので、勉強も兼ねてまとめていきます。
UVスクロールのやり方
使用環境
・Unity2022.3.31f1
・URP
・基本的なUVスクロールのノード組み合わせ
まずはUVスクロールのベースとなるノードの組み合わせを以下に載せます。

<使用ノード>
・Sample Texture 2D
・Tilling And Offset
・Time
<追加プロパティ>
・Texture2D(記事では「_MainTex」と命名)
上の画像のようにノードを組み合わせることで、設定したテクスチャが右上から左下へスクロールするようになります。

・X方向またはY方向にスクロール
UVを横方向(X)または縦方向(Y)にスクロールするには、先ほど紹介したノードの組み合わせを以下のように変更することで実現できます。

横方向にスクロールさせるなら、TimeノードをVector2ノードのXに、縦方向にスクロールさせるならYに繋げます。

繋げた場合

繋げた場合
・スクロールのスピードを変更する
スクロールのスピードを変更するには以下のようにノードを組みます。

スクロールのスピード調整をインスペクターで行うために、Black BoardにFloat型のプロパティを追加します。Multiplyノードを追加し、入力側にTimeと追加したFloat型のプロパティを繋げます。あとは、Multiplyノードの出力側をOffsetに繋げば完成です。

以下に異なるスピードのUVスクロール例を載せておきます。


なお、スクロールのスピードを可変させつつ、スクロール方向を横か縦にする場合は、MultiplyノードとTiling And Offsetノードの間にVector2ノードを追加し、スクロールさせたい方向に応じて、MultiplyノードとVector2ノードを繋ぎ変えればOKです。
・スクロール方向を反転させる
スクロールの方向を反転させるには、以下のようにノードを組みます。

Branchノードを追加し、Trueの値を「-1」、Falseの値を「1」に設定します。またBlack BoardにBoolean型のプロパティを追加します(記事内では「Reverse」と命名)。
プロパティを追加したら、BranchノードのPredicateにBoolean型のプロパティを接続します。
その後Multiplyノードを使い、TimeとBranchの出力を乗算し、乗算結果をOffsetに繋げば完成です。

おわりに
かなり基本的な内容でありますが、Shader GraphでのUVスクロールについて紹介してきました。さらにアレンジを加えれば、もっと凝ったスクロール表現ができるので、いろいろと試してみてください。
コメント