0

图片

嘿伙计!

我附上了一张图片,以可视化我对我遇到的问题的解释。在我的游戏中,有一个绿球在无尽的道路上滚动,被一个黄球追赶。为了使道路看起来无止境,当球在 x 轴上穿过一定距离(顶部图像上的紫色线)时,它会被传送回来(底部图像上的紫色线)。我是这样做的:

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

它工作得很好。

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

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 有一个跟随 Player 的脚本,也许它与此有关?

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;

}
4

1 回答 1

0

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

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

于 2017-05-29T03:08:43.430 回答