Unity3D Vector 3 传送

Unity3D Vector 3 Teleporting

image

大家好!

我附上了一张图片,以形象地说明我对我遇到的问题的解释。在我的游戏中,有一个绿球在无尽的道路上滚动,被一个黄球追赶。 为了让这条路看起来没有尽头,当球在 x 轴上穿过一定距离(上图中的紫线)时,它会被传送回来(下图中的紫线)。我是这样做的:

if (gameObject.transform.position.x <= -20) {
    gameObject.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z);
}

它工作得很好。

当绿球被“传送”时,黄球应该以相同的值传送回来,所以传送后两个球之间的距离不会改变。所以我制作了一个 public 游戏对象“敌人”,将黄球放在检查器中的敌人区域内,并将代码更改为:

if (gameObject.transform.position.x <= -20) {
    gameObject.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z);
    enemy.transform.position = new Vector3 (transform.position.x + 80, transform.position.y, transform.position.z);
}

但是正如您在底部图片中看到的那样,黄色球并没有传送到相同的距离。看起来距离是从它的原始起点开始添加的,而不是从它传送之前的点开始的。希望你们知道解决办法。

Yellow Ball 有一个跟随玩家的脚本,也许它需要做些什么?

void Update ()
{

    //enemy follows the ball with speed 8
    transform.LookAt (target);
    transform.Translate (Vector3.forward * 8 * Time.deltaTime);

    //fix y-position
    Vector3 tmp = transform.position;
    tmp.y = lockedY;
    transform.position = tmp;

}

您想将敌人后退 80 个单位,那么您需要将 敌人 后退 80 个单位。

enemy.transform.position = new Vector3(敌人.position.x + 80,敌人 .position.y,敌人.position.z);