Esempio n. 1
0
    // Start is called before the first frame update
    void Start()
    {
        // Populate the level objects
        foreach (Transform child in transform)
        {
            levelObjects.Add(child.gameObject);
            levelVelocities.Add(Vector3.zero);

            // Disable all the 2D colliders
            foreach (Collider2D collider in child.gameObject.GetComponentsInChildren <Collider2D>())
            {
                collider.enabled = false;
            }

            // Disable all the Rigidbodies
            foreach (Rigidbody2D rigidbody in child.gameObject.GetComponentsInChildren <Rigidbody2D>())
            {
                if (rigidbody.bodyType != RigidbodyType2D.Static)
                {
                    DontTouchRigidbody dontTouch = rigidbody.gameObject.AddComponent <DontTouchRigidbody>();
                    dontTouch.kinematic   = rigidbody.isKinematic;
                    dontTouch.constraints = rigidbody.constraints;

                    rigidbody.isKinematic  = true;
                    rigidbody.constraints |= RigidbodyConstraints2D.FreezePositionX | RigidbodyConstraints2D.FreezePositionY;
                }
            }
        }

        EnableCurrentColliders();
    }
Esempio n. 2
0
    public void EnableCurrentColliders()
    {
        foreach (Collider2D collider in levelObjects[1].GetComponentsInChildren <Collider2D>())
        {
            collider.enabled = true;
        }

        foreach (Rigidbody2D rigidbody in levelObjects[1].GetComponentsInChildren <Rigidbody2D>())
        {
            DontTouchRigidbody dontTouch = rigidbody.gameObject.GetComponent <DontTouchRigidbody>();

            if (dontTouch != null)
            {
                rigidbody.isKinematic = dontTouch.kinematic;
                rigidbody.constraints = dontTouch.constraints;
            }
        }
    }