嘿伙计!
我附上了一张图片,以可视化我对我遇到的问题的解释。在我的游戏中,有一个绿球在无尽的道路上滚动,被一个黄球追赶。为了使道路看起来无止境,当球在 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;
}