首先,我是Unity的新手,显然我做错了什么但我不知道是什么。
看看下面的图片。有三个球。最大的一个是原始大小(导入),另外两个是缩放的。
我写了一个代码,并给这些球一个线性力量朝向相机的右边缘。相机尺寸为10(每种方式为5)。当它到达边缘时,它应该弹回到左边的相机边缘。它起作用,但只有原来的一个在到达边缘时被反弹(其他球也同时反弹,但它们不应该因为它们没有到达边缘)。
所有球的位置相同,但有两个球被缩放并从#34;空中反弹 - 检查图像")。
更改方向的代码位于更新功能中。它看起来像这样:
if (rigidBody.transform.position.x > 5)
{
rigidBody.AddForce(new Vector2(-60,0));
}
我感谢所有人的帮助。
答案 0 :(得分:2)
我看到的问题是你的代码只检查位置以使球反弹。位置可能在图像中心测量(检查出来!),所以你必须考虑每个球的宽度 - 实际上,从中心开始,宽度的一半。
要检查图像的位置加半宽是否已达到限制,您可以使用 renderer.bounds.size ,如下所示:
if ((transform.position.x + renderer.bounds.size.x/2) > 5)
{
//change directions
//do something else...
}
换句话说,球的大小越小,x位置必须增长到达极限,然后让它们反弹。
然而,我强烈建议采用不同的方法来防止所有硬编码。假设你改变你的相机尺寸,你将不得不重新改写一切!
我会在相机限制的两侧放置对撞机,当你的球碰撞时,设置一个OnCollisionEnter
功能,让它们改变方向。这离你的问题有点偏离,所以我会把它留在那里。
祝你好运!