C# Lerp未按预期工作,跳转到值,而不是随着时间的推移平稳地进行
你好 我正在做一个游戏,当达到一定条件时,我想增加产生的粒子数。现在,我选择使用lerp,而不是它们一次全部出现,这样它们将顺利地上升到该值 然而,尽管我尽了最大的努力,我仍然无法顺利实现这一点,而且它跳到最大的方式太快了。 我已经发布了我的代码,希望有人能以我的方式指出错误C# Lerp未按预期工作,跳转到值,而不是随着时间的推移平稳地进行,c#,unity3d,C#,Unity3d,你好 我正在做一个游戏,当达到一定条件时,我想增加产生的粒子数。现在,我选择使用lerp,而不是它们一次全部出现,这样它们将顺利地上升到该值 然而,尽管我尽了最大的努力,我仍然无法顺利实现这一点,而且它跳到最大的方式太快了。 我已经发布了我的代码,希望有人能以我的方式指出错误 void Update () { if (increaseLeaf==true) { var main = LeafStormParticleSystem.main; De
void Update () {
if (increaseLeaf==true)
{
var main = LeafStormParticleSystem.main;
Debug.Log("here");
main.maxParticles = (int)Mathf.Lerp(5, 150, counter);
main.simulationSpeed = (int)Mathf.Lerp(1, 5, counter );
counter += Time.deltaTime / 2;
if (main.simulationSpeed == 5)
{
increaseLeaf = false;
}
}
//counter += Time.deltaTime / 2;
if (decreaseLeaf == true)
{
var main = LeafStormParticleSystem.main;
main.maxParticles = (int)Mathf.Lerp(150, 5, decounter);
main.simulationSpeed = (int)Mathf.Lerp(5, 1, decounter);
decounter += Time.deltaTime / 2;
if (main.maxParticles == 5)
{
decreaseLeaf = false;
}
}
}
当您使用lerp()时,可以执行如下操作
var num=new var(lerp(a,b))代码>可能重复@RodrigoRodrigues不幸的是,这个问题无助于我,你能澄清“太快了”有多快吗?您预计需要多长时间?您能告诉我们您将计数器/计数器设置为0的位置吗?lerp/slerp的第三个参数需要一个介于0和1之间的值。更不用说从0到1的转换方式需要2秒,因为您没有定义速度。@Niana您的速度是/2
,因为您将时间除以。deltaTime除以2,实际上是告诉它需要2秒,如果您想延长它或增加时间,您可以为速度设置一个变量,然后将/2改为Time.deltaTime/speed
其中speed是您希望它花费的秒数。这如何解决问题?