public void ResetEnvironment() { if (useRandomEnvironment) { // Generate environment environmentGeneration.GenerateEnvironment(); // If environmentGeneration resets debris, reinitialize the list if (environmentGeneration.createNewDebris) { InitializeDebrisList(); } } else // If random generation is disabled { // Reset debris positions foreach (Debris debris in debrisInEnvironment) { debris.transform.position = debris.GetStartPosition(); debris.GetComponent <Rigidbody>().velocity = Vector3.zero; } // Reset robot position robot.ResetPosition(); } // Update DropZone's debris list dropZone.SetDebrisList(debrisInEnvironment); if (randomizeDropZonePosition) { float xPos = Random.Range(boundsMinimumX, boundsMaximumX); float zPos = Random.Range(boundsMinimumZ, boundsMaximumZ); dropZone.transform.position = new Vector3(transform.position.x + xPos, -0.24f, transform.position.z + zPos); } // Initialize debrisInZone values foreach (Debris debris in debrisInEnvironment) { currentDebrisInZone.Add(dropZone.IsInZone(debris.transform.position)); } previousDebrisInZone = currentDebrisInZone; ResetDebrisInZone(); iterations++; }