【Unity】基本的なUVスクロールのやり方【Shader Graph】

Unity

はじめに

今回はShader GraphでのUVスクロールのやり方を扱っていきます。基礎中の基礎的な内容なのですが、何かと必要になる機会があると思いますし、私自身まだまだShader Graphの機能を使いこなせていないので、勉強も兼ねてまとめていきます。

UVスクロールのやり方

使用環境

・Unity2022.3.31f1
・URP

・基本的なUVスクロールのノード組み合わせ

まずはUVスクロールのベースとなるノードの組み合わせを以下に載せます。

↑UVスクロールの基本的なノードの組み合わせ

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

↑QuadオブジェクトにUVスクロールのマテリアルを適用した例

・X方向またはY方向にスクロール

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

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

↑TimeノードをVector2ノードのXに
 繋げた場合
↑TimeノードをVector2ノードのYに
 繋げた場合

・スクロールのスピードを変更する

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

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

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

↑ScrollSpeed[0.2]の場合
↑ScrollSpeed[2]の場合

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

・スクロール方向を反転させる

スクロールの方向を反転させるには、以下のようにノードを組みます。

Branchノードを追加し、Trueの値を「-1」、Falseの値を「1」に設定します。またBlack BoardにBoolean型のプロパティを追加します(記事内では「Reverse」と命名)。
プロパティを追加したら、BranchノードのPredicateにBoolean型のプロパティを接続します。

その後Multiplyノードを使い、TimeとBranchの出力を乗算し、乗算結果をOffsetに繋げば完成です。

↑インスペクターで「Reverse」の真偽値によって向きの反転が行われる

おわりに

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

コメント

タイトルとURLをコピーしました