缩放精灵的位置总是相同的 - Unity(我做错了什么?)

时间:2016-06-09 11:41:56

标签: c# unity3d unity5

首先,我是Unity的新手,显然我做错了什么但我不知道是什么。

看看下面的图片。有三个球。最大的一个是原始大小(导入),另外两个是缩放的。

我写了一个代码,并给这些球一个线性力量朝向相机的右边缘。相机尺寸为10(每种方式为5)。当它到达边缘时,它应该弹回到左边的相机边缘。它起作用,但只有原来的一个在到达边缘时被反弹(其他球也同时反弹,但它们不应该因为它们没有到达边缘)。

所有球的位置相同,但有两个球被缩放并从#34;空中反弹 - 检查图像")。

enter image description here

更改方向的代码位于更新功能中。它看起来像这样:

if (rigidBody.transform.position.x > 5)
        {

            rigidBody.AddForce(new Vector2(-60,0));


        }

我感谢所有人的帮助。

1 个答案:

答案 0 :(得分:2)

我看到的问题是你的代码只检查位置以使球反弹。位置可能在图像中心测量(检查出来!),所以你必须考虑每个球的宽度 - 实际上,从中心开始,宽度的一半。

要检查图像的位置加半宽是否已达到限制,您可以使用 renderer.bounds.size ,如下所示:

if ((transform.position.x + renderer.bounds.size.x/2) > 5)
    {
        //change directions
        //do something else...
    }

换句话说,球的大小越小,x位置必须增长到达极限,然后让它们反弹。

然而,我强烈建议采用不同的方法来防止所有硬编码。假设你改变你的相机尺寸,你将不得不重新改写一切! 我会在相机限制的两侧放置对撞机,当你的球碰撞时,设置一个OnCollisionEnter功能,让它们改变方向。这离你的问题有点偏离,所以我会把它留在那里。 祝你好运!