CGメソッド

CG制作に関してのヒント

MENU

【Unity】UVスクロールするやり方

UVスクロールするやり方

UnityでUVスクロールでリピートアニメーションするやり方

シェーダーのOffsetの値をアニメーションさせてもよいですが、単純なループであればスクリプトを書いた方がサイズ的にも優しいです。

準備

・テクスチャはシームレステクスチャを使用
・テクスチャの設定は WrapMode:Repeatにすること
・MeshのUVもシームレスにスクロールできるように0.1を確認すること

やり方

1. スクロールさせたいオブジェクトに下記のスクリプトを追加
2. スクロールさせたい方向へscrollSpeedXまたはscrollSpeedYに値を入力して、スピードを調節

using UnityEngine;
using System.Collections;

public class UVScroll : MonoBehaviour {
    
    [SerializeField]
    private float scrollSpeedX = 0.1f;

    [SerializeField]
    private float scrollSpeedY = 0.1f;
    
    void Start() {
        GetComponent<Renderer>().sharedMaterial.SetTextureOffset("_MainTex", Vector2.zero);
    }
    
    void Update() {
        var x = Mathf.Repeat(Time.time * scrollSpeedX, 1);
        var y = Mathf.Repeat(Time.time * scrollSpeedY, 1);

        var offset = new Vector2(x, y);
        
        GetComponent<Renderer>().sharedMaterial.SetTextureOffset("_MainTex", offset);
    }
}