【发布时间】: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?您能否发布您的粒子系统设置的屏幕截图?