Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpawnManager : MonoBehaviour{ #region--------------------------------------------------------------------v VARIÁVEIS v-------------------------------------------------------------------- public GameObject enemyPrefab; // 5. Referenciar prefab Enemy private float spawnRange = 9.0f; // 5.1 public int enemyCount; // 9.2 public int waveNumber = 1; // 9.3 Controle de quantos Enemys irão surgir após o total chegar a 0 por na cena public GameObject powerupPrefab; // 9.4 Referência do powerup #endregion------------------------------------------------------------------^ VARIÁVEIS ^-------------------------------------------------------------------- void Start() { SpawnEnemyWave(waveNumber); // 9 --v [9.1 passo o número de inimigos que quero instanciar, de acordo com meu método criado][9.3 Irá Instanciar de acordo com o acréscimo na variável waveNumber] Instantiate(powerupPrefab, GenerateSpawnPosition(), powerupPrefab.transform.rotation); }//=========================================================================^ START ^====================================================================== void Update() { enemyCount = FindObjectsOfType<Enemy>().Length; // 9.2 Irei achar o script do meu Enemy na cena. Como ele possui mais de 1 prefab, tenho que usar o método Length, pois é uma matriz. if(enemyCount == 0) // 9.2 Quando os inimigos chegarem a 0 na cena, meu método de instanciar os Enemys vai gerar 1 { waveNumber++; // 9.3 Vai adicionar 1 Enemy sempre que a contagem chegar a 0. Ou seja, o game começa com 1, se chegar a 0, será instanciado waveNumber + 1, se chegar a 0, será instanciado waveNumber (que está em 2 no momento) + 1... E assim sucessivamente. SpawnEnemyWave(waveNumber); // 9.3 Instancia os Enemys atualizando com o valor do enemyNumber++ sempre que chegar a 0 Instantiate(powerupPrefab, GenerateSpawnPosition(), powerupPrefab.transform.rotation); // 9.4 Instanciando um powerup aleatório a cada onda. Como já tenho um método que me dá uma posição de Vector3 GenerateSpawnPosition(), uso ele } }//=========================================================================^ UPDATE ^====================================================================== private Vector3 GenerateSpawnPosition() // 5.2 { float spawnPosX = Random.Range(-spawnRange, spawnRange);// 5.1 Intervalo aleatório de spawn no eixo X float spawnPosZ = Random.Range(-spawnRange, spawnRange); // 5.1 Intervalo aleatório de spawn no eixo Z Vector3 randomPos = new Vector3(spawnPosX, 0, spawnPosZ); // 5.1 Variável para a posição de spawn do meu Enemy return randomPos; // 5.2 retornando o valor do Vector3 para poder ser usado /* OBSERVAÇÃO: Uso um método return pois este método me retorna um valor Vector3 sempre, como preciso usar esse valor para instanciar o objeto, uso o return, assim posso utilizá-lo em qualquer lugar do script */ }//---------------------------------------------------------------------^ GenerateSpawnPosition() ^--------------------------------------------------------------------- private void SpawnEnemyWave(int enemiesToSpawn) // 9. Gerando mais inimigos { for (int i = 0; i < enemiesToSpawn; i++) // 9. Defino o tipo da minha variável i; faço a condição dela, no caso i < enemiesToSpawn (no caso, definirá a quantidade que quero spawnar de inimigos); E acresço 1 ao meu i (poderia ser i += 1). Ou seja, cada vez que acrescer 1, ele lerá o código e instanciará um inimigo, totalizando 3, pois começa do 0 { Instantiate(enemyPrefab, GenerateSpawnPosition(), enemyPrefab.transform.rotation); // 5. Gerando (instanciando) meu Enemy numa posição aleatória (reopare que todo o cálculo da posição está no meu método return lá embaixo) } }//---------------------------------------------------------------------^ SpawnEnemyWave() ^--------------------------------------------------------------------- }//===================================================================^ MonoBehaviour{...} ^==================================================================
Compartilhar