예제 #1
0
    /// <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;
        }
    }
예제 #2
0
    /// <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;
        }
    }
예제 #3
0
    /// <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;
        }
    }
예제 #4
0
    /// <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;
        }
    }
예제 #5
0
    /// <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;
        }
    }
예제 #6
0
    /// <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;
                    }
                }
            }
        }
    }