Unity C#运行时移动平台偏移



所以我为我的游戏制作了一些非常简单的移动平台。

public float speedX;
public float speedY;
public float length;
public float pause;
float timer;
Vector3 move;
void Start () {
    timer = 0;
}
void Update()
{
    if (timer == 0)
    {
        speedX *= -1;
        speedY *= -1;
        timer = length;
    } else
    {
        timer--;
    }
    if (timer > pause)
    {
        move = new Vector3(speedX, speedY, 0);
        transform.Translate(move * Time.smoothDeltaTime);
    }
}

当我播放这个场景时,我把它们放进去,它们运行得很好。但当我玩完游戏并到达那个场景时,无论平台向哪个方向移动,它们都会有一点偏移。有人知道我如何让平台在不同的游戏环节中保持一致吗?

Time.smoothDeltaTime不是一个恒定的速率,因此平台移动的距离会发生变化。这些微小的差异加起来会使原始位置发生位移。

我会定义start&端点,然后在它们之间移动。看看这些方便的方法可以找到一些想法:Vector3.MoveForward&Vector3.Lerp

最好使用tween引擎,比如http://dotween.demigiant.com/.

如果你安装了Dotween,那么你可以简单地使用

transform.DOMove(new vector3(1 ,0 , 1) , duration);

您也可以为粗花呢设置"减缓"。或使用Oncomplete功能;

transform.DOMove(new vector3(1 ,0 , 1) , duration)
    .SetEase(Ease.OutCubic)
    .OnCompelete(() => { shouldClose = true; }); 

您也可以为您的青少年.SetLoops(-1)设置循环。

最新更新