Beispiel #1
0
    void InitLevel(int level)
    {
        levelTransform = new GameObject("Level").transform;
        targetLevelY   = 0.0f;

        // Get the screen borders.
        float left   = Camera.main.ScreenToWorldPoint(new Vector3(0.0f, 0.0f, 0.0f)).x;
        float right  = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, 0.0f, 0.0f)).x;
        float down   = Camera.main.ScreenToWorldPoint(new Vector3(0.0f, 0.0f, 0.0f)).y;
        float up     = Camera.main.ScreenToWorldPoint(new Vector3(0.0f, Screen.height, 0.0f)).y;
        float middle = left;

        while (middle - left < 1.0f || right - middle < 1.0f || Mathf.Abs(middle - victimController.transform.position.x) < level)
        {
            middle = Random.Range(left, right);
        }

        // Create the ground floor.
        Transform groundLeft = GameObject.Instantiate(groundPrefab).transform;

        groundLeft.localPosition = new Vector3(left + 0.5f * (middle - left), groundPrefab.transform.position.y, 0.0f);
        groundLeft.localScale    = new Vector3(middle - left, groundPrefab.transform.localScale.y, 1.0f);
        groundLeft.parent        = levelTransform;
        Transform groundRight = GameObject.Instantiate(groundPrefab).transform;

        groundRight.localPosition = new Vector3(middle + 1.0f + 0.5f * (right - middle - 1.0f), groundPrefab.transform.position.y, 0.0f);
        groundRight.localScale    = new Vector3(right - middle - 1.0f, groundPrefab.transform.localScale.y, 1.0f);
        groundRight.parent        = levelTransform;
        // Create borders, so the victim cannot escape! :)
        Transform borderLeft = GameObject.Instantiate(groundPrefab).transform;

        borderLeft.localPosition = new Vector3(left - 0.5f * borderLeft.localScale.x, 0.0f, 0.0f);
        borderLeft.localScale    = new Vector3(borderLeft.localScale.x, 15.0f, 1.0f);
        borderLeft.parent        = levelTransform;
        Transform borderRight = GameObject.Instantiate(groundPrefab).transform;

        borderRight.localPosition = new Vector3(right + 0.5f * borderRight.localScale.x, 0.0f, 0.0f);
        borderRight.localScale    = new Vector3(borderRight.localScale.x, 15.0f, 1.0f);
        borderRight.parent        = levelTransform;

        // Start the level empty.
        levelTransform.position = new Vector3(0.0f, down - 0.5f * levelTransform.localScale.y, 0.0f);
        yThreshold = 0.5f * down;

        // Reset the Victim.
        victimController.GetComponent <Rigidbody>().velocity        = Vector3.zero;
        victimController.GetComponent <Rigidbody>().angularVelocity = Vector3.zero;
        victimController.transform.position = new Vector3(victimController.transform.position.x, up + 0.5f * victimController.transform.localScale.y, 0.0f);
        victimController.GetComponent <Renderer>().enabled = true;

        // Enable noise maker generation.
        noiseManager.enabled = true;
    }
Beispiel #2
0
    void GameMenu()
    {
        noiseManager.enabled = false;

        // Create the victim.
        victimController = GameObject.Instantiate(victimPrefab).GetComponent <VictimController>();
        victimController.GetComponent <Renderer>().enabled = false;
    }