Unity3D Vector 3传送

时间:2017-05-28 14:26:37

标签: c# unity3d qvector3d

image

嘿伙计!

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

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

它完全正常。

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

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);
}

但正如你在底部图像上看到的那样,黄色的球并没有被传送到相同的距离。似乎距离是从它的原始起点添加的,而不是从传送之前的点开始。希望你们知道解决方案。

黄球有一个跟随玩家的脚本,也许它必须对此做点什么?

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;

}

1 个答案:

答案 0 :(得分:0)

你想要将敌人移回80个单位,然后你需要将敌人移回80个单位。

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