精灵纹理不重复统一
Sprite texture not repeating unity
我想在 Quad 上重复纹理,但它没有重复
这是我的代码
using UnityEngine;
using System.Collections;
public class Track : MonoBehaviour {
public float speed;
Vector2 Offset;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Offset = new Vector2 (0, Time.deltaTime * speed);
GetComponent<Renderer> ().material.mainTextureOffset = Offset;
}
}
请有人帮忙
你给Offset
赋值时逻辑有问题。
解释如下:
void Update () {
// Assume that Offset's value is { 2, 3 }
Offset = new Vector2 (0, Time.deltaTime * speed);
// Assume Time.DeltaTime's value is 0.12f
// Assume speed's value is 10
// Now to figure out the problem ( 0.12f * 10f = 1.2f )
// Offset's value is now 1.2f
GetComponent<Renderer> ().material.mainTextureOffset = Offset;
}
正如您现在看到的,您只是分配每次几乎相同的值。该值只能有一点变化,因为 Time.DeltaTime
会在帧之间产生增量时间,大约为 0.0016f
.
所以要明确一点,您不应该依赖 Time.DeltaTime
,因为它几乎是恒定值。首先尝试在 Start
或 Awake
方法中初始化您的 Offset
:
void Start() {
Offset = GetComponent<Renderer>().material.mainTextureOffset;
}
然后在您的 Update
方法中,您可以增加 X
值:
void Update() {
Offset = new Vector2(Offset[0] + (Time.DeltaTime * speed), Offset[1]);
GetComponent<Renderer>().material.mainTextureOffset = Offset;
}
我想在 Quad 上重复纹理,但它没有重复
这是我的代码
using UnityEngine;
using System.Collections;
public class Track : MonoBehaviour {
public float speed;
Vector2 Offset;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Offset = new Vector2 (0, Time.deltaTime * speed);
GetComponent<Renderer> ().material.mainTextureOffset = Offset;
}
}
请有人帮忙
你给Offset
赋值时逻辑有问题。
解释如下:
void Update () {
// Assume that Offset's value is { 2, 3 }
Offset = new Vector2 (0, Time.deltaTime * speed);
// Assume Time.DeltaTime's value is 0.12f
// Assume speed's value is 10
// Now to figure out the problem ( 0.12f * 10f = 1.2f )
// Offset's value is now 1.2f
GetComponent<Renderer> ().material.mainTextureOffset = Offset;
}
正如您现在看到的,您只是分配每次几乎相同的值。该值只能有一点变化,因为 Time.DeltaTime
会在帧之间产生增量时间,大约为 0.0016f
.
所以要明确一点,您不应该依赖 Time.DeltaTime
,因为它几乎是恒定值。首先尝试在 Start
或 Awake
方法中初始化您的 Offset
:
void Start() {
Offset = GetComponent<Renderer>().material.mainTextureOffset;
}
然后在您的 Update
方法中,您可以增加 X
值:
void Update() {
Offset = new Vector2(Offset[0] + (Time.DeltaTime * speed), Offset[1]);
GetComponent<Renderer>().material.mainTextureOffset = Offset;
}