// 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(); }
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; } } }