[AJUDA] Sistema de rodadas
4 participantes
Página 1 de 1
[AJUDA] Sistema de rodadas
olá pessoal blz?
estou tentando fazer um sistema de rodadas parecido com o do Call of Duty Black Ops Zombies. exemplo: na primeira rodada são spawnados 8 inimigos, depois que eu matar todos os 8 inimigos eu avanço pra rodada 2 no qual serão spawnados 16 e assim por diante....
esse script quase faz isso. O problema é que ele nao espera os inimigos serem mortos para avançar pra proxima rodada... Podem me ajudar a corrigir esse erro??
estou tentando fazer um sistema de rodadas parecido com o do Call of Duty Black Ops Zombies. exemplo: na primeira rodada são spawnados 8 inimigos, depois que eu matar todos os 8 inimigos eu avanço pra rodada 2 no qual serão spawnados 16 e assim por diante....
- Código:
using UnityEngine;
using System.Collections;
public class Instanciador : MonoBehaviour {
public Transform[] Destinos; // linke os destinos aleatorios aqui
public GameObject[] Objetos; // linke os objetos aleatorios aqui
private float cronometro;
public float tempoPorSpawn;
public int rodada;
public float intervalo;
public int maximoPorRodada;
public int numeroDeInstanciados;
void Start (){
rodada = 1;
intervalo = 0;
maximoPorRodada = 8;
numeroDeInstanciados = 0;
}
void Update (){
cronometro += Time.deltaTime;
intervalo += Time.deltaTime;
if (cronometro >= tempoPorSpawn && intervalo >= 8 && numeroDeInstanciados <= maximoPorRodada) {
Instantiate(Objetos[Random.Range (0,Objetos.Length)],Destinos[Random.Range (0,Destinos.Length)].transform.position,transform.rotation);
cronometro = 0;
numeroDeInstanciados = numeroDeInstanciados + 1;
}
if (numeroDeInstanciados >= maximoPorRodada) {
rodada = rodada + 1;
maximoPorRodada = maximoPorRodada + 6;
intervalo = 0;
}
Debug.Log (rodada);
}
}
esse script quase faz isso. O problema é que ele nao espera os inimigos serem mortos para avançar pra proxima rodada... Podem me ajudar a corrigir esse erro??
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: [AJUDA] Sistema de rodadas
Tente fazer um outro if dizendo 'se NUMEROS DE ISTANCIADOS for >= MAXIMO POR RODADAS'
então, crie uma variável booleana para dizer por exemplo: todosInstanciados. nesse if coloque como true.
Então no seu segundo if faça assim
if (numeroDeInstanciados >= maximoPorRodada && todosInstanciados == true) {....
Talvez funcione, estou sem tempo pra tentar resolver, então fiz assim, mais tarde posso fazer se caso este não funcionar :D
então, crie uma variável booleana para dizer por exemplo: todosInstanciados. nesse if coloque como true.
Então no seu segundo if faça assim
if (numeroDeInstanciados >= maximoPorRodada && todosInstanciados == true) {....
Talvez funcione, estou sem tempo pra tentar resolver, então fiz assim, mais tarde posso fazer se caso este não funcionar :D
Re: [AJUDA] Sistema de rodadas
Vlw cara vou tentar e depois te falo ce seu certo
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: [AJUDA] Sistema de rodadas
O mais facil seria vc apenas linkar esse script com o script de instanciar do inimigo.
1- Crie uma variavel statica nesse script de instanciar do inimigo.
2- diga quando os inimigos forem instanciados, a variavel recebe a quantia de inimigos
3-depois no script de morte linke ele, pege essa variavel e diga , se o inimigo morrer -1;
4-depois e so dizer, se a quantia de inimigos, for igual a 0, ele colocar mais 16;
Bem simples, o modo do iago , creio que n funcione, pois n ira contar os inimigos presentes , e os que foram mortos, no modo que mencionei ainda da para usar um text, e dizer quantos inimigos estão vivos!
1- Crie uma variavel statica nesse script de instanciar do inimigo.
2- diga quando os inimigos forem instanciados, a variavel recebe a quantia de inimigos
3-depois no script de morte linke ele, pege essa variavel e diga , se o inimigo morrer -1;
4-depois e so dizer, se a quantia de inimigos, for igual a 0, ele colocar mais 16;
Bem simples, o modo do iago , creio que n funcione, pois n ira contar os inimigos presentes , e os que foram mortos, no modo que mencionei ainda da para usar um text, e dizer quantos inimigos estão vivos!
hellkiller- Mestre
- PONTOS : 4053
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [AJUDA] Sistema de rodadas
bom, mudei algumas coisas e agora ta assim:
só que agora os problemas são: o texto não esta de acordo com a quantidade de inimigos na tela... começa de acordo mas depois que eu vou matando esse numero cai e fica mostrando numeros negativos, o que não é o que eu quero..... A primeira rodada esta de acordo o maximo por rodada com o numero de instanciados, mas na segunda rodada o maximo por rodada é 14 mas mais de 20 inimigos são spawnados.....
lembrando que um trecho do script do meu inimigo ta assim:
espero que estejam entendendo.....
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Instanciador : MonoBehaviour {
public Transform[] Destinos; // linke os destinos aleatorios aqui
public GameObject[] Objetos; // linke os objetos aleatorios aqui
private float cronometro;
public float tempoPorSpawn;
public int rodada;
private float intervalo;
public int maximoPorRodada;
public static int numeroDeInstanciados;
public bool limitePorRodada;
public Text inimigosPresentes;
void Start (){
rodada = 1;
intervalo = 0;
maximoPorRodada = 8;
numeroDeInstanciados = 0;
limitePorRodada = false;
}
void Update (){
cronometro += Time.deltaTime;
intervalo += Time.deltaTime;
if (cronometro >= tempoPorSpawn && intervalo >= 8 && numeroDeInstanciados <= maximoPorRodada && limitePorRodada == false) {
Instantiate(Objetos[Random.Range (0,Objetos.Length)],Destinos[Random.Range (0,Destinos.Length)].transform.position,transform.rotation);
cronometro = 0;
numeroDeInstanciados = numeroDeInstanciados + 1;
}
if (numeroDeInstanciados >= maximoPorRodada) {
limitePorRodada = true;
}
if (limitePorRodada == true && numeroDeInstanciados == 0) {
rodada = rodada + 1;
maximoPorRodada = maximoPorRodada + 6;
limitePorRodada = false;
intervalo = 0;
}
inimigosPresentes.text = "INIMIGOS: "+ numeroDeInstanciados;
}
}
só que agora os problemas são: o texto não esta de acordo com a quantidade de inimigos na tela... começa de acordo mas depois que eu vou matando esse numero cai e fica mostrando numeros negativos, o que não é o que eu quero..... A primeira rodada esta de acordo o maximo por rodada com o numero de instanciados, mas na segunda rodada o maximo por rodada é 14 mas mais de 20 inimigos são spawnados.....
lembrando que um trecho do script do meu inimigo ta assim:
- Código:
void CheckHealth(){
if(health <= 0){
Instanciador.numeroDeInstanciados = Instanciador.numeroDeInstanciados - 1;
cair_morto = true;
espero que estejam entendendo.....
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: [AJUDA] Sistema de rodadas
Cara, para um sistema de rodadas eh meio complicado
Tem várias coisinhas a serem observadas, más de cara posso perceber que o metodo não é o ideal... O correto seria utilizar uma List para ter um controle sobre todos os inimigos em cena... cada inimigo instanciado vai para a lista, e por lá é possível controla-los tranquilamente.
Diga, como pretende fazer este sistema? Só instancia a proxima rodada depois que acabar a atual? depois de x tempo? instancia tudo ao mesmo tempo?
Tem várias coisinhas a serem observadas, más de cara posso perceber que o metodo não é o ideal... O correto seria utilizar uma List para ter um controle sobre todos os inimigos em cena... cada inimigo instanciado vai para a lista, e por lá é possível controla-los tranquilamente.
Diga, como pretende fazer este sistema? Só instancia a proxima rodada depois que acabar a atual? depois de x tempo? instancia tudo ao mesmo tempo?
Re: [AJUDA] Sistema de rodadas
O que eu quero fazer é: eu começo na rodada 1. Nesta rodada são spawnados 8 inimigos. Somente depois que eu matar todos estes inimigos eu avanço pra rodada 2. Na rodada 2 são spawnados 14 inimigos. Depois que eu matar todos os 14 eu avanço pra rodada 3 e assim vai subindo. Esse sistema é igual o do jogo Call of Duty Black Ops Zombies. Tem muitos vídeos no YouTube desse jogo caso VC queira saber direitinho como é
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: [AJUDA] Sistema de rodadas
Ja consegui resolver
Obrigado mesmo assim
Obrigado mesmo assim
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Tópicos semelhantes
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» [Ajuda] Sistema de Chuva
» Ajuda com sistema de colisão
» [AJUDA] Sistema de portas
» AJUDA COM SCRIPT DE SISTEMA QTE
» [Ajuda] Sistema de Chuva
» Ajuda com sistema de colisão
» [AJUDA] Sistema de portas
» AJUDA COM SCRIPT DE SISTEMA QTE
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos