Beispiel #1
0
    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++;
    }