【问题标题】:Unity Color.Lerp "laggy"Unity Color.Lerp“滞后”
【发布时间】:2016-02-21 15:46:53
【问题描述】:

如果玩家进入触发区,我想在 Unity 中将两个粒子系统的起始颜色从一种颜色转换为另一种颜色。我试图用 Color.Lerp 来做,但结果是它“滞后”,这意味着它之间只有 3 种颜色。我的代码:

public IEnumerator animateTriggerEnter(float duration = 0.1f)
{
    float elapsedTime = 0f;
    float lerp = 0f;
    while (lerp <= 1f)
    {
        elapsedTime += Time.deltaTime;
        lerp = elapsedTime / (float) duration;
        topParticle.startColor = Color.Lerp(standardColor, triggerColor, lerp);
        botParticle.startColor = Color.Lerp(standardColor, triggerColor, lerp);
        yield return null;
    }
}

对于lerp 的值,我总是得到相同的 6 个值,但它不应该更多吗?它也保持滞后,持续时间更长。

【问题讨论】:

  • 你可以简单地尝试长时间(比如 3f),看看会发生什么?
  • 它不会改变。仍然只是从一种颜色到另一种颜色的粗略过渡,只是每次过渡之间的持续时间更长。
  • 如果粒子系统在默认设置下启用了颜色超过生命周期选项,我可以绕过这个问题。
  • 我刚刚重新创建了这个设置,它工作得很好。您是否在代码中的任何地方都弄乱了Time.timeScale?您能否发布您的粒子系统设置的屏幕截图?

标签: unity3d coroutine lerp


【解决方案1】:

首先我会尝试隔离

Color.Lerp(standardColor, triggerColor, lerp);

并测试它的速度Stopwatch? 如果我是对的,lerp 注意到的不仅仅是

result=startValue + (endValue - startValue) * lerpValue;

在这种情况下 + 1 个构造函数执行。 根据MSDN 数学本身应该少于

lerp = elapsedTime / (float) duration;

你确定是 lerp 问题吗?

【讨论】:

  • 我很确定这不是一个 lerp 问题。 OP 认为是这样(实际上可能是这样),但无论如何都很好。也就是说,您的帖子不会尝试以任何方式回答问题,并且此类建议通常应该放在 cmets 中。干杯! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 2019-06-22
  • 2014-06-01
  • 2013-12-19
相关资源
最近更新 更多