首先,我是团结的新手,显然我做错了什么,但我不知道是什么。
请看下面的图片。有三个球。最大的一个是原来的尺寸(进口),另外两个是缩放的。
我写了一个代码,并给这些球一个直线力,向右边缘的相机。相机大小为10 (每条路5)。当它到达边缘时,它应该会反弹回左边的摄像机边缘。它可以工作,但只有原来的一个是反弹时,它的边缘(其他球也是在同一时间反弹,但他们不应该,因为他们还没有到达边缘)。
所有的球都有相同的位置,但两个球被缩放,并从“空中检查图像”中弹出)。

更改方向的代码在更新函数中。看起来是这样的:
if (rigidBody.transform.position.x > 5)
{
rigidBody.AddForce(new Vector2(-60,0));
}我很感激所有的帮助。
发布于 2016-06-09 15:10:12
我看到的问题是,您的代码只检查位置,以使球反弹。位置可能是在图像中心测量的(请看这个!),所以你必须考虑到每个球的宽度-实际上,从中心到一半的宽度。
要检查图像的位置加上半宽是否达到极限,可以使用renderer.bounds.size,如下所示:
if ((transform.position.x + renderer.bounds.size.x/2) > 5)
{
//change directions
//do something else...
}换句话说,球的大小越小,x位置越长才能达到极限,然后让它们反弹。
然而,我强烈鼓励采取一种不同的方法来防止所有的硬编码。只要你改变你的相机大小,你将不得不重写所有的东西!我会把对撞机两边的相机限制,当你的球与他们碰撞,设置一个OnCollisionEnter函数,使他们改变方向。这与你的问题有点脱节,所以我就把它放在这里。祝好运!
https://stackoverflow.com/questions/37724993
复制相似问题