这里着重说明unity中怎么用代码控制纹理的偏移和平铺;偏移的纹理可以实现很多流动的效果,如本例中的车流水线……;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class roadFlow : MonoBehaviour {
float roadChange,offset;
// Use this for initialization
void Start ()
{
if (transform.name == "Road01"||transform.name=="Road04"||transform.name=="Road07")
{
offset = 1.3f;
}
if (transform.name == "Road02" || transform.name == "Road05" || transform.name == "Road08")
{
offset = 1.6f;
}
if (transform.name == "Road03" || transform.name == "Road06" || transform.name == "Road09")
{
offset = 1.9f;
}
}
// Update is called once per frame
void Update ()
{
//得到纹理的x方向偏移
// offset = transform.GetComponent<MeshRenderer>().material.GetTextureOffset("_MainTex").x;
//得到纹理的x方向平铺
// offset = transform.GetComponent<MeshRenderer>().material.GetTextureScale("_MainTex").x;
roadChange += Time.deltaTime*offset;
//设置纹理偏移 对应offset 返回值vector2
transform.GetComponent<MeshRenderer>().material.SetTextureOffset("_MainTex", new Vector2(roadChange, 0));
if (Input.GetKeyDown(KeyCode.A))
{
//设置纹理平铺 对应Tiling 返回值vector2
transform.GetComponent<MeshRenderer>().material.SetTextureScale("_MainTex", new Vector2(2,2));
}
}
}