gpt4 book ai didi

c# - 如何正确实现多个 Vector3.Lerps 串联?

转载 作者:太空宇宙 更新时间:2023-11-03 22:29:05 26 4
gpt4 key购买 nike

我正在尝试在协程中使用两个不同的 lerp 来扩大然后缩小一系列游戏对象。尽管这两个 while 循环在功能上是相同的,但对象会增长但不会缩小,而是保持增加的大小。

我已将初始和最终尺寸替换为硬编码值,但问题仍然存在。我已经测试并发现两个循环都执行良好,并且程序没有卡在任何一个循环中。

我对 lerp 或协程的本质有一些根本性的误解吗?

    initialSize = transform.localScale.x;
finalSize = 2f * initialSize;

float elapsedTime = 0f;
while (elapsedTime < trap.pulsateTime)
{
transform.localScale = Vector3.Lerp(transform.localScale, finalSize * Vector3.one, (elapsedTime / trap.pulsateTime));
yield return new WaitForEndOfFrame();
elapsedTime += Time.deltaTime;
}
elapsedTime = 0f;
while (elapsedTime < trap.pulsateTime)
{
transform.localScale = Vector3.Lerp(transform.localScale, initialSize * Vector3.one, (elapsedTime / trap.pulsateTime));
yield return new WaitForEndOfFrame();
elapsedTime += Time.deltaTime;
}

最佳答案

要正确 lerp,您应该存储起始值而不是 lerp 当前值

float elapsedTime = 0f;
while (elapsedTime < trap.pulsateTime)
{
transform.localScale = Vector3.Lerp(initialSize, finalSize * Vector3.one, (elapsedTime / trap.pulsateTime));
yield return new WaitForEndOfFrame();
elapsedTime += Time.deltaTime;
}
elapsedTime = 0f;
while (elapsedTime < trap.pulsateTime)
{
transform.localScale = Vector3.Lerp(finalSize , initialSize *
Vector3.one, (elapsedTime / trap.pulsateTime));
yield return new WaitForEndOfFrame();
elapsedTime += Time.deltaTime;
}

关于c# - 如何正确实现多个 Vector3.Lerps 串联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59153689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com