UV Nodes
Flipbook——动画:根据输入的UV创建动画或纹理帧动画的UV。平铺的贴片数量由输入的宽度和高度值定义。当前块的索引是由输入Tile的值定义的。
此节点可用于创建纹理动画功能,通常用于粒子效果和精灵,方法是向输入Tile提供时间( Time )并将输出输出到纹理采样器(Texture Sampler)的UV输入槽。
UV数据通常在0到1之间,从UV空间的左下角开始。这可以从UV预览的左下角的黑色值看到。由于Flipbook通常从左上角开始,参数Invert Y在默认情况下是启用的,但是您可以通过切换Invert X和Invert Y参数来改变Flipbook的方向。
Name | Direction | Type | Binding | Description |
---|---|---|---|---|
UV | Input | Vector 2 | UV | Input UV value |
Width | Input | Vector 1 | None | Amount of horizontal tiles |
Height | Input | Vector 1 | None | Amount of vertical tiles |
Tile | Input | Vector 1 | None | Current tile index |
Out | Output | Vector 2 | None | Output UV value |
Name | Type | Options | Description |
---|---|---|---|
Invert X | Toggle | True, False | If enabled tiles are iterated from right to left |
Invert Y | Toggle | True, False | If enabled tiles are iterated from top to bottom |
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;
}