嘿伙计!
我附上了一张图片来形象化我对问题的解释。在我的游戏中,有一个绿色的球沿着无尽的道路滚动,被一个黄色的球追逐。 为了使道路看起来无穷无尽,当它穿过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;
}
答案 0 :(得分:0)
你想要将敌人移回80个单位,然后你需要将敌人移回80个单位。
enemy.transform.position = new Vector3(
敌人 .position.x + 80,
敌人 .position.y,
敌人 .position.z);