如何处理未附加到游戏对象的脚本中的2d冲突

时间:2016-04-17 22:40:17

标签: unity3d unity5

通常,根据我所学到的,在附加到游戏对象的脚本中处理冲突。在我的游戏中,我有6个游戏对象相互碰撞,使得前一个想法很难实现。我想让所有游戏对象预制并在附加到空游戏对象的另一个脚本中实例化它们。如何在新脚本中处理所有这6个游戏对象之间的冲突?

1 个答案:

答案 0 :(得分:1)

我想知道和Joe Blow一样的事情,但是如果你想要尝试做的是手动处理碰撞(顺便说一下,这将使物理更加困难,因为你必须计算弹性,重力等等。 。手动)然后你可以试试这个:

public class OtherScript : MonoBehavior
{
    public GameObject[] objects; //Your 6 GameObject

    void Update()
    {
        for (int i=0; i<objects.Length; i++)
        {
            for (int j=0; j<objects.Length; i++)
            {
                if (objects[i].GetComponent<Renderer>().bounds.Intersects(
                           objects[j].GetComponent<Renderer>().bounds))
                {
                    //Handle collision
                    break;
                }
            }
        }
    }
}

如果这不起作用,那么您也应该尝试使用GetComponent<MeshFilter>().mesh.bounds。请注意,如果您的游戏是2D,则应使用GetComponent<SpriteRenderer>().mesh.bounds代替。