Flipbook 노드
설명
UV 입력에 제공된 UV의 플립북(텍스처 시트 애니메이션)을 생성합니다. 시트의 타일 수는 Width 및 Height 입력 값으로 정의됩니다. 현재 타일의 인덱스는 Tile 입력 값으로 정의됩니다.
이 노드는 시간을 Tile 입력에 제공하고 텍스처 샘플러의 UV 입력 슬롯으로 출력함으로써 파티클 효과 및 스프라이트에 일반적으로 사용되는 텍스처 애니메이션 기능을 생성합니다.
UV 데이터는 일반적으로 0-1 범위이며, UV 공간의 왼쪽 하단에서 시작합니다. 이는 UV 미리보기의 왼쪽 하단 모서리에 있는 검은색 값으로 확인할 수 있습니다. 플립북은 일반적으로 왼쪽 상단에서 시작하므로 Invert Y 파라미터가 기본적으로 활성화되어 있지만, Invert X 및 Invert Y 파라미터를 전환하여 플립북의 방향을 변경할 수 있습니다.
포트
이름 | 방향 | Type | 바인딩 | 설명 |
---|---|---|---|---|
UV | 입력 | 벡터 2 | UV | 입력 UV 값 |
Width | 입력 | 플로트 | None | 수평 타일 수 |
높이 | 입력 | 플로트 | None | 수직 타일 수 |
Tile | 입력 | 플로트 | None | 현재 타일 인덱스 |
Out | 출력 | 벡터 2 | None | 출력 UV 값 |
컨트롤
이름 | Type | 옵션 | 설명 |
---|---|---|---|
Invert X | Toggle | True, False | 활성화된 타일이 오른쪽에서 왼쪽으로 반복되는 경우 |
Invert Y | Toggle | 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;
}