Example #1
0
        public void BuildTerrain()
        {
            if (total_size < activate_size)
            {
                Debug.LogError("Total Size too small");
                return;
            }

            if (terrain_stp == null)
            {
                Debug.LogError("Terrain ScritableObject not exist");
                return;
            }

            PreCheck();
            Clear();

            stored_prefabs = new GameObject[total_size];
            int activateStartXPos = -Mathf.RoundToInt((activate_size * 0.5f));
            int totalStartXPos    = -Mathf.RoundToInt((total_size * 0.5f));

            for (int i = 0; i < total_size; i++)
            {
                GameObject selectedPrefab = terrain_stp.DisableTerrainPrefab;
                if (UtilityMethod.IsWithinRange(activateStartXPos, -activateStartXPos, totalStartXPos + i))
                {
                    GameObject terrainPrefab = (terrain_stp.TerrainPrefab.Length > 1) ? terrain_stp.TerrainPrefab[i % 2] : terrain_stp.TerrainPrefab[0];
                    selectedPrefab = terrainPrefab;
                }

                GameObject instantiateObject = Instantiate(
                    selectedPrefab, new Vector3(transform.position.x + activateStartXPos + i, 0, transform.position.z),
                    Quaternion.identity);

                instantiateObject.transform.SetParent(Terrains.transform);
                stored_prefabs[i] = instantiateObject;
            }

            GenerateObstacle(true);
        }