Exemplo n.º 1
0
    /// <summary>
    /// Método SpawnVillagers, que instancia al ladrón y a los aldeanos en la partida
    /// </summary>
    public void SpawnVillagers()
    {
        List <Transform> updatedVillagerPoints = new List <Transform>(villagerPoints);

        /// Generar Ladrón
        // Obtener datos aleatorios
        int        randomNumber   = Random.Range(0, updatedVillagerPoints.Count);
        Transform  randomPoint    = updatedVillagerPoints[randomNumber];
        Quaternion randomRotation = Quaternion.Euler(0, Random.Range(0, 360), 0);

        // Instanciar objeto
        GameObject thiefGameObject = Instantiate(thiefPrefab, randomPoint.position, randomRotation, villagersParent.transform);

        // Obtener componente Villager
        Thief newThief = thiefGameObject.GetComponent <Thief>();

        // Se aleatoriza
        newThief.RandomizeNPC();

        // Instanciamos sus objetos
        newThief.PutItems();

        // Asignar a la referencia
        thief = newThief;

        // Borrar posición de la lista
        updatedVillagerPoints.Remove(randomPoint);

        /// Generar aldeanos
        for (int i = 0; i < (difficulty.villagers - 1); i++)
        {
            // Obtener datos aleatorios
            randomNumber   = Random.Range(0, updatedVillagerPoints.Count);
            randomPoint    = updatedVillagerPoints[randomNumber];
            randomRotation = Quaternion.Euler(0, Random.Range(0, 360), 0);

            // Instanciar objeto
            GameObject villagerGameObject = Instantiate(villagerPrefab, randomPoint.position, randomRotation, villagersParent.transform);

            // Obtener componente Villager
            Villager newVillager = villagerGameObject.GetComponent <Villager>();

            // Aleatorizamos el aldeano y comprobamos si ya existe uno igual
            do
            {
                newVillager.RandomizeNPC();
            } while (CheckDuplicateVillager(newVillager));

            // Instanciamos sus objetos
            newVillager.PutItems();

            // Añadimos al aldeano a la lista
            villagers.Add(newVillager);

            // Borrar posición de la lista
            updatedVillagerPoints.Remove(randomPoint);
        }
    }