[Godot] 스크립트만으로 UV 스크롤을 수행하는 방법
6800 단어 Godot
이 페이지에서는 다음 UV 스크롤을 위한 스크립트만 작성합니다.
UV 스크롤 스크립트
새 프로젝트, 2D 노드를 만들고 이름을 "Main"으로 변경하며 다음 스크립트를 첨부합니다.
Main.gd
extends Node2D
# テクスチャを読み込んでおく
var tex = preload("res://icon.png")
# 時間経過で変化するUVのUの値
var time_u = 0
func _ready():
# テクスチャリピートを有効にする
tex.flags |= Texture.FLAG_REPEAT
func _process(delta):
# 経過時間でUVスクロールする
time_u += delta
if time_u > 1:
# 0.0〜1.0となるようにする
time_u -= 1
# _draw() を呼び出す
update()
func _draw():
# 左上座標
var x = 30
var y = 50
# 画像の幅と高さ
var width = tex.get_width()
var height = tex.get_height()
# 頂点リストを作成
var points = PoolVector2Array()
points.append(Vector2(x, y))
points.append(Vector2(x+width, y))
points.append(Vector2(x+width, y+height))
points.append(Vector2(x, y+height))
# 色を設定
var colors = PoolColorArray([Color.white])
# UVリストを作成.
var uvs = PoolVector2Array()
var u = time_u
uvs.append(Vector2(u, 0))
uvs.append(Vector2(1+u, 0))
uvs.append(Vector2(1+u, 1))
uvs.append(Vector2(u, 1))
# ポリゴンを描画.
draw_polygon(points, colors, uvs, tex)
간단하게 말하자면 _ready()
부분에서 tex.flags |= Texture.FLAG_REPEAT
로 설정하고 UV 값이 변할 때(지정 값이 0.0~1.0을 초과할 때) 무늬를 반복적으로 그린다.그리고
_draw()
에서 draw_polygon()
를 사용하여 UV 값을 틀리게 그려서 UV 스크롤을 할 수 있습니다.이른바 UV
UV는 텍스쳐의 왼쪽 위 구석(0, 0), 오른쪽 아래 구석(1, 1)을 가리키는 좌표계입니다.
왼쪽 상단의 좌표를 (0,0)~(1,0), 오른쪽 하단의 좌표계를 (1,0)~(2,0)로 바꾸어 스크롤 처리를 실현한다.
예를 들어, 텍스쳐 반복이 활성화된 상태에서 0.5개가 어긋나면 다음 상태가 됩니다.
Reference
이 문제에 관하여([Godot] 스크립트만으로 UV 스크롤을 수행하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/2dgames_jp/items/f138c08489d422e80e8f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)