在条件下改变C#中当前gameObject的位置

时间:2014-03-15 17:17:49

标签: c# position unity3d transform

我一直在寻找和绞尽脑汁,试着让这段代码正常工作,但无济于事。希望你们能提供帮助。 我有一个简单的设置,立方体每帧移动位置。我需要立方体到达不同位置时到达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位置对定位没有影响。

2 个答案:

答案 0 :(得分:1)

将您的==更改为>=,看看是否有所作为。我的猜测是position.x永远不会完全等于15,这可能是由于浮点精度错误造成的,也可能是因为你的翻译逻辑从一帧跳到下一帧超过了15。

答案 1 :(得分:0)

我遇到了动画无法正常工作的问题,并且觉得我已经在互联网上搜索了几天试图让它工作,所以这非常有用。在我的情况下,动画&#39; GameObject位于y = 1的位置,应该已经移动到y = 9,但除非我点击了动画师中的过渡,否则不会更新。我将代码从x == 15更改为y <= 9Vector3.forward更改为Vector3.up,现在效果很好。希望这可能会帮助其他人解决同样的问题。使用Unity v 2017.1.2