var targetscript : Diamond;
var red : Color;
var orange : Color;
function Start () {
gameObject.camera.backgroundColor = red;
}
function Update () {
if (targetscript.score > 4) {
gameObject.camera.backgroundColor = Color.Lerp(red, orange, Time.time);
}
}
所以现在,如果分数大于4,那么它将使用lerp将相机背景颜色更改为橙色。但它太快了。我在网上看到Time.time是1秒。什么是替代方式但是2或3秒?我试过这个:http://answers.unity3d.com/questions/328891/controlling-duration-of-colorlerp-in-seconds.html我尝试了投票答案的代码,但它没有用。它仍然快速通过。有没有人有任何想法?感谢
答案 0 :(得分:0)
Time.time为您提供自游戏开始以来的秒数。你想要的是Time.deltaTime,它是每帧之间的时差。
var targetscript : Diamond;
var red : Color;
var orange : Color;
var t : float = 0;
var duration : float = 3.0; //however long you want it to be
function Start () {
gameObject.camera.backgroundColor = red;
}
function Update () {
if (targetscript.score > 4) {
gameObject.camera.backgroundColor = Color.Lerp(red, orange, t);
t += Time.deltaTime/duration;
}
}
答案 1 :(得分:0)
Color.Lerp(颜色a,颜色b,浮点t),所以:
- > t = 0,颜色结果为
- > t = 0.5,颜色结果是半个半b
- > t = 1.0,颜色结果为b
基于该定义,当Time.time返回值> = 1.0时,将完成Lerp。这就是为什么你的代码在1秒内完成的原因
所以,您可以像这样更改更新功能:
var duration : float = 3.0; //however long you want it to be
function Update ()
{
if (targetscript.score > 4)
{
gameObject.camera.backgroundColor = Color.Lerp(red, orange, Time.time / duration);
}
}
这将使Lerp与持续时间完全一致。因为 Time.time / duration> =当Time.time> =持续时间时为。