小编Leo*_*oad的帖子

协程中的 Vector3.Lerp 在 Unity3D 上无法正常工作

在使用Vector3.Lerp协程内部时,我遇到了一个奇怪的问题,这是没有意义的,因为我的游戏中有很多协程,而且它们都运行良好。

我正在努力实现的目标

我只是想通过调用协程和简单地更改对象的位置将对象从起始高度移动到最终高度。InVolo()Vector3.Lerp

我的代码

float elapsedTime = 0f;

    while (elapsedTime < TempoSalita)
    {


        transform.position = Vector3.Lerp(transform.position, 
            new Vector3(transform.position.x, maxHight, transform.position.z), (elapsedTime / TempoSalita));


        elapsedTime += Time.deltaTime;

        yield return null;
    }

    transform.position = new Vector3(transform.position.x, maxHight, transform.position.z);
    yield return null;
Run Code Online (Sandbox Code Playgroud)

maxHight仅仅是4F和TempoSalita为2F。协程在OnTriggerEnter 中启动并且工作正常,对象到达 y 4f 并在 2 秒内退出 while。

问题

基本上,应该在 2 秒后elapsedTime / TempoSalita变为1,但是对象在 0.3 秒后到达结束位置,当elapsed/TempoSalita是 0.2 时,这对我来说毫无意义。Vector3.Lerp 应该在t值从 …

c# ienumerator coroutine unity-game-engine

1
推荐指数
1
解决办法
621
查看次数

标签 统计

c# ×1

coroutine ×1

ienumerator ×1

unity-game-engine ×1