Flipbook ノード
説明
入力 UV に供給された UV のフリップブック (テクスチャシートアニメーション) を作成します。 シート上のタイルの量は入力 Width および Height の値で定義されます。現在のタイルのインデックスは入力 Tile の値で定義されます。
このノードは、テクスチャアニメーションの機能を作成するために使用でき、一般的には、入力 Tile に Time を供給して Texture Sampler の UV 入力スロットに出力することで、パーティクルエフェクトやスプライトに用いられます。
UV データは通常、UV 空間の左下を起点とした 0 から 1 の範囲内にあります。これは、UV プレビューの左下の角にあるブラック値で確認できます。フリップブックは通常左上から開始するので、デフォルトではパラメーター Invert Y が有効になっていますが、フリップブックの方向は Invert X および Invert Y パラメーターを切り替えることで変更できます。
ポート
Name | Direction | タイプ | バインディング | 説明 |
---|---|---|---|---|
UV | 入力 | Vector 2 | UV | 入力 UV 値 |
Width | 入力 | Vector 1 | なし | 横方向のタイルの量 |
Height | 入力 | Vector 1 | なし | 縦方向のタイルの量 |
Tile | 入力 | Vector 1 | なし | 現在のタイルのインデックス |
Out | 出力 | Vector 2 | なし | 出力 UV 値 |
制御
Name | タイプ | オプション | 説明 |
---|---|---|---|
Invert X | トグル | True、False | 有効の場合、タイルが右から左へ反復されます。 |
Invert Y | トグル | True、False | 有効の場合、タイルが上から下へ反復されます。 |
生成されるコードの例
以下のサンプルコードは、このノードの出力の一例を示したものです。
float2 _Flipbook_Invert = float2(FlipX, FlipY);
void Unity_Flipbook_float(float2 UV, float Width, float Height, float Tile, float2 Invert, out float2 Out)
{
Tile = fmod(Tile, Width * Height);
float2 tileCount = float2(1.0, 1.0) / float2(Width, Height);
float tileY = abs(Invert.y * Height - (floor(Tile * tileCount.x) + Invert.y * 1));
float tileX = abs(Invert.x * Width - ((Tile - Width * floor(Tile * tileCount.x)) + Invert.x * 1));
Out = (UV + float2(tileX, tileY)) * tileCount;
}