예제 #1
0
    //Spawns player
    private void spawnPlayer()
    {
        if (currLevel < levelCount)
        {
            //Randomises level
            amplitude = UnityEngine.Random.Range(20, 40f);
            frequency = UnityEngine.Random.Range(1, 2f);
            CreateRoad();

            //Gets spawn position
            int spawnPos = (int)UnityEngine.Random.Range(2, points.Count - 2);

            GameObject g;

            //Spawns player
            g = Instantiate(player, player.transform.position, Quaternion.identity);
            g.transform.name     = "Car";
            g.transform.position = new Vector3(points[spawnPos].x, 1f, points[spawnPos].z + 5f);
            g.transform.LookAt(new Vector3(0, points[spawnPos + 1].y, 0));

            //Spawn marker
            g = builder.getPyramid(new Vector3(points[spawnPos].x, 15f, points[spawnPos].z - 10f), 20f, 20f, 10f, Color.red);
            g.transform.name = "Marker";
            g.transform.Rotate(180, 0, 0);
            StartCoroutine(spin(g));

            //Spawn Boundary
            g = builder.getCube(new Vector3(points[spawnPos].x, 1f, points[spawnPos].z), roadWidth * 3, 10, 1);
            g.transform.name = "Border";
            g.transform.LookAt(new Vector3(0, points[spawnPos + 1].y, 0));
            g.transform.Rotate(0, 90, 0);

            //Spawn Level trigger
            g = Instantiate(leveltrig, transform.position, Quaternion.identity);
            g.transform.name     = "Trigger";
            g.transform.position = new Vector3(points[spawnPos].x, 1f, points[spawnPos].z - 5f);
            g.transform.LookAt(new Vector3(0, points[spawnPos + 1].y, 0));
            g.transform.Rotate(0, 90, 0);
            g.GetComponent <BoxCollider>().size = new Vector3(roadWidth * 3, 2, 1);
        }
    }
예제 #2
0
    void generateMaze()
    {
        //Maze sizes
        int width = 30;
        int depth = 40;

        //Wall and border colors
        Color wallcol   = Random.ColorHSV();
        Color bordercol = Random.ColorHSV();

        //Start and end points
        Vector3 startPos = new Vector3(Random.Range(0, width) + 0.5f, 0.1f, Random.Range(0, depth) + 0.5f);
        Vector3 endPos   = new Vector3(Random.Range(0, width) + 0.5f, 0.1f, Random.Range(0, depth) + 0.5f);

        //Floor
        builder.createPlane(Vector3.zero, width, depth);

        //Boundary Walls
        builder.createCube(new Vector3(width + 0.5f, 2.5f, depth / 2), 1, 5, depth, bordercol);
        builder.createCube(new Vector3(-0.5f, 2.5f, depth / 2), 1, 5, depth, bordercol);
        builder.createCube(new Vector3(width / 2, 2.5f, depth + 0.5f), width, 5, 1, bordercol);
        builder.createCube(new Vector3(width / 2, 2.5f, -0.5f), width, 5, 1, bordercol);

        //Z aligned walls
        builder.createCube(new Vector3(2, 1.5f, 9), 0.02f, 3, 14, wallcol);
        builder.createCube(new Vector3(2, 1.5f, 31), 0.02f, 3, 18, wallcol);
        builder.createCube(new Vector3(4, 1.5f, 30), 0.02f, 3, 16, wallcol);
        builder.createCube(new Vector3(4, 1.5f, 7), 0.02f, 3, 14, wallcol);
        builder.createCube(new Vector3(6, 1.5f, 32), 0.02f, 3, 16, wallcol);
        builder.createCube(new Vector3(6, 1.5f, 7), 0.02f, 3, 14, wallcol);
        builder.createCube(new Vector3(6, 1.5f, 21), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(8, 1.5f, 5), 0.02f, 3, 6, wallcol);
        builder.createCube(new Vector3(8, 1.5f, 32), 0.02f, 3, 12, wallcol);
        builder.createCube(new Vector3(8, 1.5f, 15), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(10, 1.5f, 3), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(10, 1.5f, 31), 0.02f, 3, 14, wallcol);
        builder.createCube(new Vector3(12, 1.5f, 25), 0.02f, 3, 10, wallcol);
        builder.createCube(new Vector3(12, 1.5f, 35), 0.02f, 3, 6, wallcol);
        builder.createCube(new Vector3(14, 1.5f, 5), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(14, 1.5f, 23), 0.02f, 3, 10, wallcol);
        builder.createCube(new Vector3(14, 1.5f, 35), 0.02f, 3, 10, wallcol);
        builder.createCube(new Vector3(16, 1.5f, 27), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(16, 1.5f, 18), 0.02f, 3, 4, wallcol);
        builder.createCube(new Vector3(16, 1.5f, 23), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(16, 1.5f, 35), 0.02f, 3, 6, wallcol);
        builder.createCube(new Vector3(18, 1.5f, 16), 0.02f, 3, 4, wallcol);
        builder.createCube(new Vector3(18, 1.5f, 27), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(18, 1.5f, 23), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(18, 1.5f, 35), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(20, 1.5f, 3), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(20, 1.5f, 7), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(20, 1.5f, 16), 0.02f, 3, 8, wallcol);
        builder.createCube(new Vector3(20, 1.5f, 27), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(20, 1.5f, 23), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(22, 1.5f, 15), 0.02f, 3, 6, wallcol);
        builder.createCube(new Vector3(22, 1.5f, 27), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(22, 1.5f, 23), 0.02f, 3, 2, wallcol);
        builder.createCube(new Vector3(24, 1.5f, 26), 0.02f, 3, 8, wallcol);
        builder.createCube(new Vector3(24, 1.5f, 15), 0.02f, 3, 6, wallcol);
        builder.createCube(new Vector3(26, 1.5f, 26), 0.02f, 3, 8, wallcol);
        builder.createCube(new Vector3(26, 1.5f, 15), 0.02f, 3, 10, wallcol);
        builder.createCube(new Vector3(28, 1.5f, 12), 0.02f, 3, 20, wallcol);
        builder.createCube(new Vector3(28, 1.5f, 27), 0.02f, 3, 6, wallcol);
        builder.createCube(new Vector3(28, 1.5f, 35), 0.02f, 3, 2, wallcol);

        //X aligned walls
        builder.createCube(new Vector3(2, 1.5f, 20), 4, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(7, 1.5f, 22), 6, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(7, 1.5f, 38), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(7, 1.5f, 18), 10, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(8, 1.5f, 20), 4, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(8, 1.5f, 24), 4, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(9, 1.5f, 16), 14, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(10, 1.5f, 6), 4, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(11, 1.5f, 4), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(13, 1.5f, 14), 10, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(13, 1.5f, 30), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(15, 1.5f, 12), 14, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(16, 1.5f, 6), 4, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(16, 1.5f, 4), 4, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(17, 1.5f, 10), 18, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(17, 1.5f, 28), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(17, 1.5f, 22), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(17, 1.5f, 30), 6, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(18, 1.5f, 8), 20, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(19, 1.5f, 2), 18, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(20, 1.5f, 20), 8, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(21, 1.5f, 28), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(21, 1.5f, 22), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(22, 1.5f, 6), 4, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(22, 1.5f, 4), 4, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(22, 1.5f, 34), 8, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(23, 1.5f, 15), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(23, 1.5f, 32), 10, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(23, 1.5f, 38), 10, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(23, 1.5f, 30), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(24, 1.5f, 36), 8, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(27, 1.5f, 22), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(27, 1.5f, 30), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(27, 1.5f, 6), 2, 3, 0.02f, wallcol);
        builder.createCube(new Vector3(27, 1.5f, 4), 2, 3, 0.02f, wallcol);

        //Spawn the player
        Instantiate(player, new Vector3(startPos.x, startPos.y + 2, startPos.z), Quaternion.identity);

        //Spawn start and end point
        builder.createPyramid(startPos, 0.5f, 0.5f, 0.5f, Color.red);
        GameObject g = builder.getPyramid(endPos, 0.5f, 0.5f, 0.5f, Color.green);

        g.transform.name = "End";
        StartCoroutine(spin(g));
    }