/// <summary> /// añade un recurso a la playa /// </summary> /// <param name="data"></param> private void addResourceInBeach(DataOfResources data) { GameObject inst; float percent = UnityEngine.Random.Range(0f, 100f); if (percent < 20f) //Crea Mina de hierro { inst = instanciateIronMine(data.Position); data.GameObject = inst; _listOfResources.Add(data); DataOfResources newResourceData; for (int j = 0; j < UnityEngine.Random.Range(2, 5); j++) { newResourceData = instanciateStoneArroundOfPosition(data.Position); if (newResourceData != null) { _listOfResources.Add(newResourceData); } } } else if (percent < 35f)//crea Roca { inst = instanciateRock(data.Position); data.GameObject = inst; _listOfResources.Add(data); } else { return; } }
/// <summary> /// añade un recurso a alta montaña /// </summary> /// <param name="data"></param> private void addResourceInHMountain(DataOfResources data) { GameObject inst; float percent = UnityEngine.Random.Range(0f, 100f); if (percent < 40f)//crea Roca { inst = instanciateRock(data.Position); data.GameObject = inst; _listOfResources.Add(data); } else { return; } }
/// <summary> /// añade un recurso al bosque /// </summary> /// <param name="data"></param> private void addResourceInForest(DataOfResources data) { GameObject inst; float percent = UnityEngine.Random.Range(0f, 100f); if (percent < 70f) //Crea arbol { inst = instanciateTree(data.Position); data.GameObject = inst; _listOfResources.Add(data); DataOfResources newResourceData; for (int j = 0; j < UnityEngine.Random.Range(6, 10); j++) { newResourceData = instanciateTreeArroundOfPosition(data.Position); if (newResourceData != null) { _listOfResources.Add(newResourceData); } } } else if (percent < 101f) //hierba { inst = instanciateHerbs(data.Position); data.GameObject = inst; _listOfResources.Add(data); DataOfResources newResourceData; for (int j = 0; j < UnityEngine.Random.Range(7, 12); j++) { newResourceData = instanciateHerbArroundOfPosition(data.Position); if (newResourceData != null) { _listOfResources.Add(newResourceData); } } } else { return; } }
/// <summary> /// añade un recurso a baja montaña /// </summary> /// <param name="data"></param> private void addResourceInLMountain(DataOfResources data) { GameObject inst; float percent = UnityEngine.Random.Range(0f, 100f); if (percent < 10f) //Crea arbol { inst = instanciateTree(data.Position); data.GameObject = inst; _listOfResources.Add(data); } else if (percent < 60f) //coal { inst = instanciateCoalMine(data.Position); data.GameObject = inst; _listOfResources.Add(data); } else { return; } }
/// <summary> /// añade un recurso a pradera /// </summary> /// <param name="data"></param> private void addResourceInMeadow(DataOfResources data) { GameObject inst; float percent = UnityEngine.Random.Range(0f, 100f); if (percent < 90f) //Crea Hierva { inst = instanciateHerbs(data.Position); data.GameObject = inst; _listOfResources.Add(data); DataOfResources newResourceData; for (int j = 0; j < UnityEngine.Random.Range(15, 20); j++) { newResourceData = instanciateHerbArroundOfPosition(data.Position); if (newResourceData != null) { _listOfResources.Add(newResourceData); } } } else if (percent < 95f) { inst = instanciateTree(data.Position); data.GameObject = inst; _listOfResources.Add(data); } else if (percent < 99f) { inst = instanciateCoalMine(data.Position); data.GameObject = inst; _listOfResources.Add(data); } else { return; } }
/// <summary> /// Metodo para añadir recursos al mapa /// </summary> public void AñadirRecursos(Vector3 position, HeightMapAndColorArray heightMapAndColoArray) { for (int i = 0; i < 25; i++) { RaycastHit raycastHit; //situa en un plano por encima del mapa objetos py hace ray cast para conocer la altura de ese punto. if (Physics.Raycast(position + Vector3.up * _heightOfRaycast + Vector3.right * UnityEngine.Random.Range(-180f, 180f) + Vector3.forward * UnityEngine.Random.Range(-180f, 180f), -Vector3.up, out raycastHit)) { if (raycastHit.transform.name == "Chunk") { //altura del mapa de ruido, NO altura global de la escena. float heightNoiseMap = heightMapAndColoArray.HeightMap[Mathf.RoundToInt(raycastHit.textureCoord.x * heightMapAndColoArray.HeightMap.GetLength(1)), Mathf.RoundToInt(raycastHit.textureCoord.y * heightMapAndColoArray.HeightMap.GetLength(1))]; int index = 0; //obtenemos el bioma donde esta situado ese punto while (index < biomes.Length) { if (heightNoiseMap >= biomes[index].Height) { index++; } else { break; } } DataOfResources dataOfResource = new DataOfResources(biomes[index - 1].Name, raycastHit.point); switch (dataOfResource.MyBiome) { case "Agua": break; case "Arena": addResourceInBeach(dataOfResource); break; case "Pradera": addResourceInMeadow(dataOfResource); break; case "Bosque": addResourceInForest(dataOfResource); break; case "BajaM": addResourceInLMountain(dataOfResource); break; case "MediaM": addResourceInMMountain(dataOfResource); break; case "AltaM": addResourceInHMountain(dataOfResource); break; } } } } }