[RESOLVIDO] Controlar quantidades de inimigos em tela
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Controlar quantidades de inimigos em tela
Olá pessoal venho com mais um duvida, estou tendo Spawns de inimigos de tempos em tempos se o PLAYEr não destruir fica em tela e assim vai aumentando.
Só que quero limitar isso por exemplo tenho 10 inimigos instanciados e ainda nenhum foi morto pelo PLAYER então quero que fique esses 10 até o meu player matar 1, ai sim ele pode "SPAWNAR" mais um.
Estou usando esse SCRIPT para SPAWNS, conseguir ou na Unity mesmo.
coloquei um 'cont' para contar os spawns mais só conta, não sei fazer para SPAWNAR , exemplo 10 inimigos e só instanciar o próximo se tiver sido morto 1 ou mais até completar os 10 permitidos.
Só que quero limitar isso por exemplo tenho 10 inimigos instanciados e ainda nenhum foi morto pelo PLAYER então quero que fique esses 10 até o meu player matar 1, ai sim ele pode "SPAWNAR" mais um.
Estou usando esse SCRIPT para SPAWNS, conseguir ou na Unity mesmo.
coloquei um 'cont' para contar os spawns mais só conta, não sei fazer para SPAWNAR , exemplo 10 inimigos e só instanciar o próximo se tiver sido morto 1 ou mais até completar os 10 permitidos.
- Código:
void Spawn()
{
if (playerHealth.health <= 0f || cont >= maxCont)
{
return;
}
int spawnPointIndex = Random.Range(0, spawnPoints.Length);
int spawEnemyIndex = Random.Range(0, enemy.Length);
// Create an instance of the enemy prefab at the randomly selected spawn point's position and rotation.
Instantiate(enemy[spawEnemyIndex], spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation);
cont++; // conta quantas vezes foi instanciados/ ou passou essa funcao
}
Última edição por dstaroski em Sáb Set 29, 2018 1:22 pm, editado 1 vez(es) (Motivo da edição : Resolvido)
Jmspp- Avançado
- PONTOS : 2826
REPUTAÇÃO : 6
Idade : 37
Respeito as regras :
Re: [RESOLVIDO] Controlar quantidades de inimigos em tela
Tenho um script aqui da para voce basea por ele.
Na morte do enemy voce chama essa funcao aqui RandomSpawner.rs.Maxenemies -= 1;
Ela vai diminuir a cada morte dos enemys entao Ativa o sistema ao chegar a zero e Desativa a ser maior
E para adicionar voce usar RandomSpawner.rs.Maxenemies += 10;
Ou pode criar no mesmo script uma funcao de espera e depois voce adiciona os 10
Usando IEnumerator e StartCoroutine.
Na morte do enemy voce chama essa funcao aqui RandomSpawner.rs.Maxenemies -= 1;
Ela vai diminuir a cada morte dos enemys entao Ativa o sistema ao chegar a zero e Desativa a ser maior
E para adicionar voce usar RandomSpawner.rs.Maxenemies += 10;
Ou pode criar no mesmo script uma funcao de espera e depois voce adiciona os 10
Usando IEnumerator e StartCoroutine.
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class RandomSpawner : MonoBehaviour
{
bool isSpawning = false;
public float minTime = 15.0f;
public float maxTime = 30.0f;
public GameObject[] enemies; // Array of enemy prefabs.
public int Maxenemies = 10;
bool Desativate = false;
public static RandomSpawner rs;
void Start()
{
rs = this;
}
IEnumerator SpawnObject(int index, float seconds)//Instanciar enemies
{
Debug.Log ("Waiting for " + seconds + " seconds");
yield return new WaitForSeconds(seconds);
Instantiate(enemies[index], transform.position, transform.rotation);
//We've spawned, so now we could start another spawn
isSpawning = false;
}
void Update ()
{
if(Maxenemies <= 0){
Desativate = true;
}
if(Maxenemies > 0){
Desativate = false;
}
if(Desativate == false){
//We only want to spawn one at a time, so make sure we're not already making that call
if(!isSpawning)
{
isSpawning = true; //Yep, we're going to spawn
int enemyIndex = Random.Range(0, enemies.Length);
StartCoroutine(SpawnObject(enemyIndex, Random.Range(minTime, maxTime)));
}
}
}
}
Re: [RESOLVIDO] Controlar quantidades de inimigos em tela
Callyde Jr escreveu:Tenho um script aqui da para voce basea por ele.
Na morte do enemy voce chama essa funcao aqui RandomSpawner.rs.Maxenemies -= 1;
Ela vai diminuir a cada morte dos enemys entao Ativa o sistema ao chegar a zero e Desativa a ser maior
E para adicionar voce usar RandomSpawner.rs.Maxenemies += 10;
Ou pode criar no mesmo script uma funcao de espera e depois voce adiciona os 10
Usando IEnumerator e StartCoroutine.Blz.
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class RandomSpawner : MonoBehaviour
{
bool isSpawning = false;
public float minTime = 15.0f;
public float maxTime = 30.0f;
public GameObject[] enemies; // Array of enemy prefabs.
public int Maxenemies = 10;
bool Desativate = false;
public static RandomSpawner rs;
void Start()
{
rs = this;
}
IEnumerator SpawnObject(int index, float seconds)//Instanciar enemies
{
Debug.Log ("Waiting for " + seconds + " seconds");
yield return new WaitForSeconds(seconds);
Instantiate(enemies[index], transform.position, transform.rotation);
//We've spawned, so now we could start another spawn
isSpawning = false;
}
void Update ()
{
if(Maxenemies <= 0){
Desativate = true;
}
if(Maxenemies > 0){
Desativate = false;
}
if(Desativate == false){
//We only want to spawn one at a time, so make sure we're not already making that call
if(!isSpawning)
{
isSpawning = true; //Yep, we're going to spawn
int enemyIndex = Random.Range(0, enemies.Length);
StartCoroutine(SpawnObject(enemyIndex, Random.Range(minTime, maxTime)));
}
}
}
}
Amigo era isso mesmo que precisava, fiz as adaptações que precisei e arrumei para controlar melhor os Spawns segue código atualizado
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RandomSpawner : MonoBehaviour {
public GameObject[] enemies; // Array of enemy prefabs.
public Transform[] spawnPoints;// Arra of points for spawns Randon enemies
[SerializeField]
bool isSpawning = false;
public float minTime = 15.0f;
public float maxTime = 30.0f;
public int Maxenemies = 10;
public int AddMoreEnemys = 5;
[SerializeField]
bool Desativate = false;
public static RandomSpawner rs;
void Start()
{
rs = this;
}
IEnumerator SpawnObject(int index, int indexPoint, float seconds)//Instanciar enemies
{
Debug.Log("Waiting for " + seconds + " seconds");
yield return new WaitForSeconds(seconds);
Instantiate(enemies[index], spawnPoints[indexPoint].position, spawnPoints[indexPoint].rotation);
Maxenemies++; //add count enemies
//We've spawned, so now we could start another spawn
isSpawning = false;
}
void Update()
{
enemiesControll();
}
#region Controll of routines
private void enemiesControll()
{
if (Maxenemies <= AddMoreEnemys)
{
Desativate = false;
isSpawning = true;
}
if (Maxenemies >= AddMoreEnemys)
{
Desativate = true;
}
if (Desativate == false)
{
//We only want to spawn one at a time, so make sure we're not already making that call
if (isSpawning)
{
isSpawning = true; //Yep, we're going to spawn
int spawnPointIndex = Random.Range(0, spawnPoints.Length); //random points
int spawEnemyIndex = Random.Range(0, enemies.Length); //random enemies
StartCoroutine(SpawnObject(spawEnemyIndex, spawnPointIndex, Random.Range(minTime, maxTime)));
}
}
if (Desativate)
{
//stop couroutines in Script if enemies with spawns for great AddMoreEnemys
StopAllCoroutines();
Debug.Log("Corrotina stopada");
}
}
#endregion
}
há e chamei a função RandomSpawner.rs.Maxenemies -= 1;
na destruição do Inimigo a subtrair e automaticamente ele add mais 1.
RESOLVIDO
Jmspp- Avançado
- PONTOS : 2826
REPUTAÇÃO : 6
Idade : 37
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO]Quantidades máximas das tags e Layers
» [RESOLVIDO] Tela (Screen) Android e Joystick adaptável à tela !
» Como controlar posição PREFAB (clones) [ RESOLVIDO ]
» [RESOLVIDO] Problema com dano aos inimigos
» [RESOLVIDO] Como fazer para controlar o áudio em diferentes cenas?
» [RESOLVIDO] Tela (Screen) Android e Joystick adaptável à tela !
» Como controlar posição PREFAB (clones) [ RESOLVIDO ]
» [RESOLVIDO] Problema com dano aos inimigos
» [RESOLVIDO] Como fazer para controlar o áudio em diferentes cenas?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos