【发布时间】:2018-09-29 03:51:06
【问题描述】:
我需要让一个对象每隔 X 秒闪烁一次。到目前为止,我有实际闪烁的代码并且效果很好,但是我需要闪烁 X 秒,然后关闭,然后再亮 X 秒。类似于打开闪光灯(闪烁),然后关闭。
我知道像invokeRepeating 这样的东西会起作用,但是闪烁依赖于在FixedUpdate 中才能运行每一帧。
对于任何想知道我实际上是在尝试对图像调制和注意力做些什么的人。这是我目前所拥有的:
public class scrFlicker : MonoBehaviour {
public SpriteRenderer sRen;
public float cycleHz; // Hz, the mesurement of cycles.
private float dtime = 0; // delta time
private Color alpha;
// Use this for initialization
void Start () {
sRen = GetComponent<SpriteRenderer>();
GetComponent<SpriteRenderer>().enabled = false;
alpha = sRen.color;
alpha.a = 0.4f;
sRen.color = alpha;
}
// Update is called once per frame
void FixedUpdate () {
startFlicker();
}
void startFlicker() {
dtime += Time.deltaTime;
float wave = Mathf.Sin((dtime * 2.0f * Mathf.PI) * cycleHz);
if(wave > 0.0f) {
GetComponent<SpriteRenderer>().enabled = true;
} else {
GetComponent<SpriteRenderer>().enabled = false;
}
if (wave == 0.0f) {
dtime = 0.0f;
}
}
}
【问题讨论】:
标签: c# unity3d frame-rate flicker