예제 #1
0
    static void createRamp(WorldGeneratorTest w, GameObject chunk_parent, int lane)
    {
        GameObject ob = GameObject.Instantiate(w.ramp_prefab);

        ob.transform.parent        = chunk_parent.transform;
        ob.transform.localPosition = new Vector3(WorldGeneratorTest.lanes_positon[lane], 0, 0);
    }
예제 #2
0
    static GameObject InstantiateAndSetParent(WorldGeneratorTest w, GameObject prefab, GameObject parent)
    {
        GameObject o = GameObject.Instantiate(prefab);

        o.transform.parent = parent.transform;
        return(o);
    }
예제 #3
0
    public static float GenerateBuild(WorldGeneratorTest w, int min_size, int max_size, int side, float z_position, GameObject chunk_parent)
    {
        float size = Random.Range(min_size, max_size);

        GenerateBuildWithFixedSize(w, (int)size, side, z_position, chunk_parent);

        return(size);
    }
예제 #4
0
    static void createObstacle(WorldGeneratorTest w, GameObject chunk_parent, int lane)
    {
        GameObject ob = GameObject.Instantiate(w.cube_prefab);

        ob.transform.parent        = chunk_parent.transform;
        ob.transform.eulerAngles   = new Vector3(0, Random.Range(0, 360), 0);
        ob.transform.localPosition = new Vector3(WorldGeneratorTest.lanes_positon[lane], 0.06F, 0);
    }
예제 #5
0
    static GameObject InstantiateAndSetParentReset(WorldGeneratorTest w, GameObject prefab, GameObject parent)
    {
        GameObject o = GameObject.Instantiate(prefab);

        o.transform.parent           = parent.transform;
        o.transform.localPosition    = Vector3.zero;
        o.transform.localEulerAngles = Vector3.zero;
        o.transform.localScale       = Vector3.one;
        return(o);
    }
    // Start is called before the first frame update
    void Start()
    {
        f = start_at * size_of_each;

        building_z[0] = f;
        building_z[1] = f;

        WRLD = this;
        for (int i = 0; i < 16; i++)
        {
            GenerateNewChunk();
        }

        start_to_delete = true;
    }
예제 #7
0
    public static void GenerateSideWalkDecoration(WorldGeneratorTest w, int current_chunk_index, GameObject chunk_parent)
    {
        if (current_chunk_index % 2 == 0)
        {
            {
                GameObject lp1 = InstantiateAndSetParent(w, w.lightpost_prefab, chunk_parent);
                lp1.transform.localPosition = new Vector3(8.16832f, 3.11f, -4.7f);
            }

            {
                GameObject lp1 = InstantiateAndSetParent(w, w.lightpost_prefab, chunk_parent);
                lp1.transform.localPosition    = new Vector3(-8.16832f, 3.11f, -4.7f);
                lp1.transform.localEulerAngles = new Vector3(0, 0, 0);
            }
        }

        if (current_chunk_index % 50 == 0)
        {
            GameObject sign_1 = InstantiateAndSetParent(w, w.kilometer_sign_prefab, chunk_parent);
            sign_1.transform.localPosition = new Vector3(-7.5f, 1, 10);
            SetSignNumber(w, sign_1, current_chunk_index / 10);

            GameObject sign_2 = InstantiateAndSetParent(w, w.kilometer_sign_prefab, chunk_parent);
            sign_2.transform.localPosition = new Vector3(7.5f, 1, 10);
            SetSignNumber(w, sign_2, current_chunk_index / 10);
        }
        else if (current_chunk_index % ((int)Random.Range(3, 7)) == 0)
        {
            bool a = Random.Range(0, 10) % 2 == 0;

            bool b = Random.Range(0, 10) % 2 == 0;


            if (a)
            {
                GameObject sign = InstantiateAndSetParent(w, w.shop_sign_prefab[(int)Random.Range(0, w.shop_sign_prefab.Length - 1)], chunk_parent);
                sign.transform.localPosition = new Vector3(-7.5f, 1.6f, 10);
            }

            if (b)
            {
                GameObject sign = InstantiateAndSetParent(w, w.shop_sign_prefab[(int)Random.Range(0, w.shop_sign_prefab.Length - 1)], chunk_parent);
                sign.transform.localPosition = new Vector3(7.5f, 1.6f, 10);
            }
        }
    }
예제 #8
0
    public static float GenerateBothSideBulding(WorldGeneratorTest w, float z_position, int current_chunk_index)
    {
        float pz = 0;

        int i = Random.Range(1, 10);
        int j = 0;

        while (i > 0 && (current_chunk_index + j) % 50 != 0)
        {
            i--;
            j++;

            GameObject p = GameObject.Instantiate(w.tunnel_prefab);
            p.transform.position = new Vector3(0, 5.69f, z_position + pz + 5f);

            w.unparented_both_side_building.Add(p);
            pz += 10;
        }

        return(pz);
    }
예제 #9
0
 public static GameObject GenerateRoad(WorldGeneratorTest w, int current_chunk_index)
 {
     return(GameObject.Instantiate(w.road_prefab));
 }
예제 #10
0
    public static int[] GenerateObstacles(WorldGeneratorTest w, int current_chunk_index, GameObject chunk_parent)
    {
        if (current_chunk_index % 8 == 0)
        {
            int[] arr  = { 0, 1, 2, 3 };
            int   type = (int)Random.Range(2, 7);
            // B--B
            if (type == 2)
            {
                createObstacle(w, chunk_parent, 0);
                createObstacle(w, chunk_parent, 3);

                arr = new int[] { 1, 2 };
            }

            // -BB-
            if (type == 3)
            {
                createObstacle(w, chunk_parent, 1);
                createObstacle(w, chunk_parent, 2);

                arr = new int[] { 0, 3 };
            }

            // BRRB
            if (type == 4)
            {
                createObstacle(w, chunk_parent, 0);
                createObstacle(w, chunk_parent, 3);
                createRamp(w, chunk_parent, 1);
                createRamp(w, chunk_parent, 2);

                arr = new int[] { 1, 2 };
            }

            // RBBR
            if (type == 5)
            {
                createObstacle(w, chunk_parent, 1);
                createObstacle(w, chunk_parent, 2);
                createRamp(w, chunk_parent, 0);
                createRamp(w, chunk_parent, 3);

                arr = new int[] { 0, 3 };
            }

            //R--R
            if (type == 6)
            {
                createRamp(w, chunk_parent, 0);
                createRamp(w, chunk_parent, 3);

                arr = new int[] { 0, 1, 2, 3 };
            }

            //-RR-
            if (type == 7)
            {
                createRamp(w, chunk_parent, 1);
                createRamp(w, chunk_parent, 2);

                arr = new int[] { 0, 1, 2, 3 };
            }



            foreach (int j in arr)
            {
                GenerateCoinsInLane(j, chunk_parent, true);
            }

            return(arr);
        }

        return(null);
    }
예제 #11
0
 static void SetSignNumber(WorldGeneratorTest w, GameObject o, int number)
 {
     InstantiateAndSetParentReset(w, w.alphabet_prefab[Mathf.FloorToInt(number / 100)], o.transform.Find("number_0").gameObject);
     InstantiateAndSetParentReset(w, w.alphabet_prefab[Mathf.FloorToInt(number / 10) % 10], o.transform.Find("number_1").gameObject);
     InstantiateAndSetParentReset(w, w.alphabet_prefab[number % 10], o.transform.Find("number_2").gameObject);
 }
예제 #12
0
 public static float GenerateBuildWithFixedSize(WorldGeneratorTest w, int size, int side, float z_position, GameObject chunk_parent)
 {
     //Prédio
     return(BuildingGenerator.GenerateBuilding(w, size, side, z_position, chunk_parent));
 }
예제 #13
0
    public static float GenerateBuilding(WorldGeneratorTest w, int size, int side, float z_position, GameObject chunk_parent)
    {
        /*
         * Random building data
         */
        float h = Random.Range(0, 4) * 4f + 8;
        float separator_size = Random.Range(5, 10) * 0.1f;


        /*
         * Make build
         */
        GameObject p = GameObject.Instantiate(w.building_level_prefab);

        p.transform.eulerAngles = new Vector3(-90f, 180f, 0f);
        p.transform.localScale  = new Vector3((side == 0 ? 1 : -1) * 50f * size, 50f * size, 50f * h);
        p.transform.position    = new Vector3(side == 0 ? (-Building.space_from_center_of_road - size / 2f) : (Building.space_from_center_of_road + size / 2f), h / 2, z_position + size / 2f);
        p.GetComponent <Renderer>().material.color = new Color(
            Random.Range(0f, 1f),
            Random.Range(0f, 1f),
            Random.Range(0f, 1f)
            );
        p.transform.parent = chunk_parent.transform;

        if (side == 0)
        {
            for (int i = 0; i <= h / 2; i++)
            {
                {
                    GameObject c = GameObject.Instantiate(w.building_corner_prefab);

                    c.transform.eulerAngles   = new Vector3(-90f, 0f, 180f);
                    c.transform.localScale    = new Vector3(400, 400, 400);
                    c.transform.localPosition = new Vector3(-11.75f, i * 2f, p.transform.position.z - (size / 2f) + 2f);
                    c.transform.parent        = p.transform;
                }

                {
                    GameObject c = GameObject.Instantiate(w.building_corner_prefab);

                    c.transform.eulerAngles   = new Vector3(-90f, 0f, 180f);
                    c.transform.localScale    = new Vector3(400, -400, 400);
                    c.transform.localPosition = new Vector3(-11.75f, i * 2f, p.transform.position.z + (size / 2f) - 2f);
                    c.transform.parent        = p.transform;
                }

                if (i % 2 == 0 && i != 0)
                {
                    GameObject c = GameObject.Instantiate(w.building_level_separator_prefab);


                    c.transform.localPosition    = new Vector3(p.transform.position.x, i * 2, p.transform.position.z);
                    c.transform.localEulerAngles = new Vector3(0, 0, 0);
                    c.transform.parent           = chunk_parent.transform;
                    c.transform.localScale       = new Vector3(50f * (size + 1f), separator_size * 50f, 50f * (size + 0.5f));
                }
            }
        }
        else
        {
            for (int i = 0; i <= h / 2; i++)
            {
                {
                    GameObject c = GameObject.Instantiate(w.building_corner_prefab);

                    c.transform.eulerAngles   = new Vector3(-90f, 0f, 180f);
                    c.transform.localScale    = new Vector3(-400, 400, 400);
                    c.transform.localPosition = new Vector3(11.75f, i * 2f, p.transform.position.z - (size / 2f) + 2f);
                    c.transform.parent        = p.transform;
                }

                {
                    GameObject c = GameObject.Instantiate(w.building_corner_prefab);

                    c.transform.eulerAngles   = new Vector3(-90f, 0f, 180f);
                    c.transform.localScale    = new Vector3(-400, -400, 400);
                    c.transform.localPosition = new Vector3(11.75f, i * 2f, p.transform.position.z + (size / 2f) - 2f);
                    c.transform.parent        = p.transform;
                }

                if (i % 2 == 0 && i != 0)
                {
                    GameObject c = GameObject.Instantiate(w.building_level_separator_prefab);


                    c.transform.localPosition    = new Vector3(p.transform.position.x, i * 2, p.transform.position.z);
                    c.transform.localEulerAngles = new Vector3(0, 0, 0);
                    c.transform.parent           = chunk_parent.transform;
                    c.transform.localScale       = new Vector3(50f * (size + 1f), separator_size * 50f, 50f * (size + 0.5f));
                }
            }
        }

        return(size);
    }