在条件下改变c#中当前游戏对象的位置

本文关键字:游戏 对象 位置 条件下 改变 | 更新日期: 2023-09-27 17:50:21

我已经搜索和绞尽脑汁一段时间了,现在试图让这段代码工作,但无济于事。希望你们能帮上忙。我有一个简单的立方体设置,每帧移动位置。我需要立方体在到达另一个位置时移动到x位置。

示例:立方体从位置0开始,沿着x轴向前移动,直到到达位置15,然后返回到0并停止。

Vector3 startingPosition;
void Start ()
{
    startingPosition = gameObject.transform.position;
}
void Update ()
{
    if (gameObject.transform.position.x == 15) {
        gameObject.transform.position = startingPosition;
    } else {
        float translation = Time.deltaTime * 2;
        transform.Translate (0, 0, translation);
        transform.Translate (Vector3.forward * translation);
    }
}

}

当前立方体连续移动(没有停止点),它的x位置对定位没有影响。

在条件下改变c#中当前游戏对象的位置

==更改为>=,看看是否会有所不同。我的猜测是position.x永远不会完全等于15,无论是由于浮点精度错误还是由于您的翻译逻辑从一帧跳到下一帧超过15。

我有一个动画不能正常工作的问题,我觉得我已经在互联网上搜索了几天,试图让它工作,所以这是非常有帮助的。在我的情况下,动画的GameObject处于y=1的位置,应该移动到y=9,但除非我点击动画器中的过渡,否则不会更新。我将代码从x == 15更改为y <= 9Vector3.forward更改为Vector3.up,现在它可以完美地工作。希望这可以帮助别人有同样的问题。使用Unity v 2017.1.2