SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Programação e autonomia
Script para abrir e fechar gaveta
Movimento 8 lados e utilização reflexiva de If e Else If (Resolução Transform).
Client Sincronizar objeto sem ser o player ??? (Networking Unet)
[TUTORIAL] AI Enemy ( Jogos de terror )
SonyVegas com qualidade ruim
[____ADMINISTRAÇÃO____] Por que ninguém responde o seu tópico?
criar um app que atende a vários produtos.
Problema de luz com objetos do ProBuilder
PROCURA-SE DESIGNER 2D e ROTEIRISTA PARA PROJETO EM ANDAMENTO!
[RESOLVIDO] Script para textura 3D
[TUTORIAL] Unity 5 - Como utilizar o Animator
Bug com mesh na animação
Formação de Equipe - programadores de C# na unity
Participe da Game Jam - Jaaj do canal Amdré Young!
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
movimento do porsonagen junto com objeto
[RESOLVIDO] Som na lanterna falhando
imagem transparente
[ AJUDA] Estou com problemas para acessar índice de uma Lista e realizar uma acao
Diferentes tamanhos de Textura afeta o desempenho do jogo?
[____ADMINISTRAÇÃO____] PRECISO DE AJUDA [DICA PARA SER AJUDADO]
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
Emulador em seu jogo como Descobrir
[GAME JAM] Consegue Fazer um jogo em 15 dias ?
[TUTORIAL] Lanterna
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
Textura em 3 dimensões na Unity 2018.2??????
Script que ao clicar em um objeto, abra um formulário
[RESOLVIDO] como atualizar o status do perfil na conta unity
Quando a porta estiver trancada dar tipo uma tremedeira
[Projeto] Line Battle
Como Posso editar Animação Generic mixamo ?
[TUTORIAL] Sistema de EXP, upar níveis, entre outros
[AULA] Estrutura de repetição while e do while
Como fazer um analogico para rotaciona a camera do jogador? android
Como mudar de Scene sem perder os valores das variáveis
Como mudar alguma configuração de acordo com a resolução da tela?
Timer
Precisa-se de Criador de sprites.
Como criar um Reflexo falso como do Sonic Adventure?
[ FIND ME ] Game em Desenvolvimento
Compilando pra android
[AULA] Estrutura de repetição for
[AULA] Listas (List)
Como encurtar e melhorar meu código, elevador(+ dúvida sobre programação em unity)
GetActiveScene
[TUTORIAL] C# .NET | Visual Studio - conexão com banco de dados MySQL
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[TUTORIAL] MOVIMENTO NA ARMA PARA FICAR MAIS REAL!
(dúvida) fazer o player cair de paraquedas estilo pubg
[TUTORIAL] Como criar cénarios 2D muito rapido e facil.
Porta "bugada"
[TUTORIAL] C# .NET | Cores aleatorias RGB
RECRUTA-SE DESIGNER PARA JOGO ONLINE..
[PROJETO MOBILE] Defeat the Illuminatis
[RESOLVIDO] Script de porta trancada com audio
Animation Fps
[RESOLVIDO] Problema com StartCoroutine
[RESOLVIDO] Erro ao usar DLL/Biblioteca do Mysql
R7 - GOOH (resident evil 7)
[ NONAME ] Procura de pessoas interessadas
FPS - Armas e balas
Voice Chat
Jogo - Board Challenge Free
[RESOLVIDO] Gerenciador de arquivos CSV
Editor de vídeo gratuito.
Erro ao usar WWW na unity
[RESOLVIDO] color.a diminuir gradualmente
Pack de áudio/ efeitos sonoros gratuitos.
[TUTORIAL] Cursor do mouse não aparecer durante o jogo
Se eu fazer uma animação diferente pra cada personagem,vai pesar ?
Como fazer um sistema de se esconder?
Dragon Bones [software]
Auto-Update de forma rápida, simples e barata.
Como fazer um botão Joystick que controle o First Person Controller?
Cloud Save por arquivo binario no google play services
[RESOLVIDO] Como editar o texto que eu selecionar ? - (InputField)
Como verificar uma colisão constante ?
[TUTORIAL] CONFIGURANDO O UNITY PARA COMPILAR PARA ANDROID
Como fazer ótimo FPSController com full body?
onde publicar os trabalhos prontos.
[RESOLVIDO] Como usar "?" e ":" ?
[RESOLVIDO] Detectar colisão usando if em C#?
[ENQUETE OFICIAL] Você está vendo o CHAT DO FÓRUM?????
SCRIPT LANTERNA
Como desenvolver uma CALCULADORA
Diferença entre Dictionary e Classes[]
[TUTORIAL] Banco de dados || MySQL
Corrida infinita
DESIGN PATTERN MVC - DÚVIDA SOBRE UNITYACTION E UNITYEVENT
Transformar modelos reais(pessoas) em modelos 3D
carregar nova cena java script e multiplayer
[AULA] Programação orientada a objetos: Classes e instâncias
[Em Desenvolvimento] Battles of Worlds
Baixe grátis modelos 3D - Hospital + objetos e personagens equipados com ossos
[TUTORIAL] Sistema de carro complexo.
[AULA] O que é programação orientada a objetos? POO
[TUTORIAL] Criar efeito Paralláx com UI
Hoje à(s) 1:11 am
Ontem à(s) 11:25 pm
Ontem à(s) 10:26 pm
Ontem à(s) 9:18 pm
Ontem à(s) 9:13 pm
Ontem à(s) 8:14 pm
Ontem à(s) 8:04 pm
Ontem à(s) 7:40 pm
Ontem à(s) 5:33 pm
Ontem à(s) 4:28 pm
Ontem à(s) 4:26 pm
Ontem à(s) 4:09 pm
Ontem à(s) 2:38 pm
Ontem à(s) 1:52 pm
Ontem à(s) 11:30 am
Ontem à(s) 10:11 am
Ontem à(s) 10:10 am
Ontem à(s) 9:36 am
Ter Jul 17, 2018 11:46 pm
Ter Jul 17, 2018 8:57 pm
Ter Jul 17, 2018 6:44 pm
Ter Jul 17, 2018 5:38 pm
Ter Jul 17, 2018 5:37 pm
Ter Jul 17, 2018 5:34 pm
Ter Jul 17, 2018 3:58 pm
Ter Jul 17, 2018 3:35 pm
Ter Jul 17, 2018 3:29 pm
Ter Jul 17, 2018 1:51 pm
Ter Jul 17, 2018 12:15 pm
Seg Jul 16, 2018 8:15 pm
Seg Jul 16, 2018 6:40 pm
Seg Jul 16, 2018 5:01 pm
Seg Jul 16, 2018 4:01 pm
Seg Jul 16, 2018 3:08 pm
Seg Jul 16, 2018 2:11 pm
Seg Jul 16, 2018 1:32 pm
Seg Jul 16, 2018 9:55 am
Dom Jul 15, 2018 11:46 pm
Dom Jul 15, 2018 10:34 pm
Dom Jul 15, 2018 10:32 pm
Dom Jul 15, 2018 10:03 pm
Dom Jul 15, 2018 9:15 pm
Dom Jul 15, 2018 2:05 pm
Dom Jul 15, 2018 12:42 am
Dom Jul 15, 2018 12:35 am
Sab Jul 14, 2018 11:38 pm
Sab Jul 14, 2018 8:06 pm
Sab Jul 14, 2018 6:54 pm
Sab Jul 14, 2018 4:23 pm
Sab Jul 14, 2018 9:44 am
Sab Jul 14, 2018 9:42 am
Sab Jul 14, 2018 12:58 am
Sex Jul 13, 2018 11:09 pm
Sex Jul 13, 2018 10:20 pm
Sex Jul 13, 2018 8:28 pm
Sex Jul 13, 2018 2:50 pm
Sex Jul 13, 2018 2:11 pm
Sex Jul 13, 2018 12:39 pm
Sex Jul 13, 2018 11:01 am
Sex Jul 13, 2018 10:31 am
Sex Jul 13, 2018 8:53 am
Qui Jul 12, 2018 11:07 pm
Qui Jul 12, 2018 10:52 pm
Qui Jul 12, 2018 10:14 pm
Qui Jul 12, 2018 9:27 pm
Qui Jul 12, 2018 8:05 pm
Qui Jul 12, 2018 7:33 pm
Qui Jul 12, 2018 7:12 pm
Qui Jul 12, 2018 6:29 pm
Qui Jul 12, 2018 6:11 pm
Qui Jul 12, 2018 5:04 pm
Qui Jul 12, 2018 4:10 pm
Qui Jul 12, 2018 3:41 pm
Qui Jul 12, 2018 3:05 pm
Qui Jul 12, 2018 11:38 am
Qui Jul 12, 2018 10:27 am
Qui Jul 12, 2018 10:27 am
Qui Jul 12, 2018 10:05 am
Qui Jul 12, 2018 9:51 am
Qui Jul 12, 2018 1:16 am
Qua Jul 11, 2018 7:25 pm
Qua Jul 11, 2018 6:33 pm
Qua Jul 11, 2018 5:24 pm
Qua Jul 11, 2018 1:44 pm
Ter Jul 10, 2018 7:54 pm
Ter Jul 10, 2018 6:23 pm
Ter Jul 10, 2018 5:37 pm
Ter Jul 10, 2018 2:14 pm
Ter Jul 10, 2018 1:09 pm
Ter Jul 10, 2018 11:48 am
Ter Jul 10, 2018 10:02 am
Ter Jul 10, 2018 9:56 am
Ter Jul 10, 2018 3:01 am
Seg Jul 09, 2018 5:45 pm
Seg Jul 09, 2018 5:26 pm
Seg Jul 09, 2018 4:00 pm
Seg Jul 09, 2018 2:16 pm
Seg Jul 09, 2018 9:33 am
Seg Jul 09, 2018 9:28 am
QueriaStarMorto
JohnRambo
Tegh
Extreme Craft
Mourao
Tegh
Tegh
marciosilva
LucasF
rafilkl2
vitorhugo
FelipeSouza11
Dom3000
QueriaStarMorto
Tegh
dstaroski
dstaroski
RafaelSquid1
JohnRambo
Callyde Jr
Dom3000
dstaroski
dstaroski
dstaroski
Dom3000
RafaelSquid1
marcos lorhan
LucioHenrique890
RandomStuff
marciosilva
LucioHenrique890
MRX
natanael.olimpio
andradetd
NKKF
FelipeSouza11
dstaroski
Nalfam
hetrodo
LucioHenrique890
dkrazor
dstaroski
NKKF
Tegh
Tegh
AprDev
NKKF
Tegh
dstaroski
gcs13
gcs13
LucioHenrique890
Nalfam
Tegh
Picode
dstaroski
RafaelSquid1
FelipeGD
igorobm
igorobm
RafaelSquid1
Locodapraça
LucioHenrique890
FelipeGD
FelipeGD
NKKF
Nalfam
NKKF
Eduardoro39
FelipeGD
FelipeGD
FelipeGD
RafaelSquid1
Zack2
NKKF
RafaelSquid1
jhobert77
Tiago95
NKKF
FelipeGD
FelipeGD
marciosilva
PauloFR
Lorena Martins
zZAndersonZz
Phph09
EduFall
MayLeone
kaique2346
passarinho69
NKKF
Isabela
LucioHenrique890
NKKF
Dom3000
MrTFGamer1
LucioHenrique890
Tegh
Tegh

Sistema de probabilidade de Spawn para Waves

Ir em baixo

DÚVIDA Sistema de probabilidade de Spawn para Waves

Mensagem por Gwiisk em Sab Mar 31, 2018 2:31 pm

Opa, estou desenvolvendo um jogo com sistema de Waves, e queria implementar um sistema de Probabilidade de Spawn de certo inimigo ou Power up, tenho uma ideia mais ou menos de como pode ser feito mas estou tendo problemas e não estou conseguindo, espero que alguém disposto possa me ajudar nesse meu problema;


Código do sistema de Waves:
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Wave_spawn : MonoBehaviour {

   public enum SpawnState { SPAWNING, WAITING, COUNTING };

    [System.Serializable]
    public class Enemy
    {
        public Transform enemyPrefab;
        [Range(0,100)]
        public float probability = 0;
    }

   [System.Serializable]
   public class Wave {
      public string name;
      public Enemy[] enemies;
      public int count;
      public float rate;
   }

   public Wave[] waves;
   private int nextWave = 0;

   public Transform[] spawnPoints;

   public float timeBetweenWaves = 5f;
   private float waveCountdown;

   private float searchCountdown = 1f;

   public SpawnState state = SpawnState.COUNTING;

   void Start() {
        waveCountdown = timeBetweenWaves;
    }

   void Update() {

      if (state == SpawnState.WAITING) {
         if (!EnemyIsAlive ()) {
            WaveCompleted ();
         } else {
            return;
         }
      }

      if (waveCountdown <= 0) {
         if (state != SpawnState.SPAWNING) {
            StartCoroutine (SpawnWave(waves[nextWave]));
         }
      } else {
         waveCountdown -= Time.deltaTime;
      }
   }

   void WaveCompleted() {

      state = SpawnState.COUNTING;
      waveCountdown = timeBetweenWaves;

      if (nextWave + 1 > waves.Length - 1) {
         nextWave = 0;
      } else {
         nextWave++;
      }
   }

   bool EnemyIsAlive() {

      searchCountdown -= Time.deltaTime;
      if(searchCountdown <= 0f) {
         searchCountdown = 1f;
         if (GameObject.FindGameObjectWithTag ("Enemy") == null) {
            return false;
         }
      }

      return true;
   }

   IEnumerator SpawnWave (Wave _wave) {
      state = SpawnState.SPAWNING;

      for (int i = 0; i < _wave.count; i++) {
         

         int ran = Random.Range(0, 100);

         //Probabilidade

         int e = Random.Range(0, _wave.enemies.Length);

         SpawnEnemy (_wave.enemies[e].enemyPrefab);
         yield return new WaitForSeconds (1f / _wave.rate);
      }

      state = SpawnState.WAITING;

      yield break;
   }

   void SpawnEnemy(Transform _enemy) {

      Transform _sp = spawnPoints[Random.Range(0, spawnPoints.Length)];
      Instantiate (_enemy, _sp.position, _sp.rotation);
   }
}

Gwiisk
Membro
Membro

PONTOS : 946
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Phph09 em Dom Abr 01, 2018 8:31 am



SISTEMA DE HORDAS(^)
avatar
Phph09
ProgramadorMaster

Masculino PONTOS : 1457
REPUTAÇÃO : 217
Idade : 13
Áreas de atuação :

Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Gwiisk em Dom Abr 01, 2018 5:21 pm

@Phph09 escreveu:

SISTEMA DE HORDAS(^)
Acho que não entendeu bem meu problema kk, eu tenho um sistema de Waves funcionando normalmente, porém ele só sorteia entre os Prefabs que eu escolhi, eu quero que um tipo de inimigo tenha mais chance que aparecer que outro Smile

Gwiisk
Membro
Membro

PONTOS : 946
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Callyde Jr em Dom Abr 01, 2018 6:45 pm

Voce poderia criar um tipo de id ou facçao para os inimigos ou ate mesmo um tipo de level,
Ex; Level de 1 a 5 spawnar inimigos classe baixa e 6 a 10 classe media 11 a 20  classe alta entedeu.
avatar
Callyde Jr
Programador

Masculino PONTOS : 2453
REPUTAÇÃO : 330
Idade : 39
Áreas de atuação : Iniciante em modelagem Blender,ScketSHUP
Progamador
Ideialista

Meu Canal
https://www.youtube.com/ch
Respeito as regras :

Ver perfil do usuário http://unnygames.000webhostapp.com/

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Gwiisk em Dom Abr 01, 2018 7:08 pm

@Callyde Jr escreveu:Voce poderia criar um tipo de id ou facçao para os inimigos ou ate mesmo um tipo de level,
Ex; Level de 1 a 5 spawnar inimigos classe baixa e 6 a 10 classe media 11 a 20  classe alta entedeu.
Eu queria mais de probabilidade, qro por chance de aparecer um inimigo especial ou item especial por exemplo, mas que não sejam comuns,

Gwiisk
Membro
Membro

PONTOS : 946
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Callyde Jr em Dom Abr 01, 2018 7:25 pm

Eu fiz um texte no script ver se funciona,
E so alterar com outro script o level desse script que ele tem que spawnar o enemy com o mesmo level
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Wave_spawn : MonoBehaviour {

  public enum SpawnState { SPAWNING, WAITING, COUNTING };

    [System.Serializable]
    public class Enemy
    {
      public int level;
        public Transform enemyPrefab;
        [Range(0,100)]
        public float probability = 0;
    }

  [System.Serializable]
  public class Wave {
      public string name;
      public Enemy[] enemies;
      public int count;
      public float rate;
  }

  public Wave[] waves;
  private int nextWave = 0;

  public Transform[] spawnPoints;

  public float timeBetweenWaves = 5f;
  private float waveCountdown;

  private float searchCountdown = 1f;

  public SpawnState state = SpawnState.COUNTING;
  public int level = 1;

  void Start() {
        waveCountdown = timeBetweenWaves;
    }

  void Update() {

      if (state == SpawnState.WAITING) {
        if (!EnemyIsAlive ()) {
            WaveCompleted ();
        } else {
            return;
        }
      }

      if (waveCountdown <= 0) {
        if (state != SpawnState.SPAWNING) {
            StartCoroutine (SpawnWave(waves[nextWave]));
        }
      } else {
        waveCountdown -= Time.deltaTime;
      }
  }

  void WaveCompleted() {

      state = SpawnState.COUNTING;
      waveCountdown = timeBetweenWaves;

      if (nextWave + 1 > waves.Length - 1) {
        nextWave = 0;
      } else {
        nextWave++;
      }
  }

  bool EnemyIsAlive() {

      searchCountdown -= Time.deltaTime;
      if(searchCountdown <= 0f) {
        searchCountdown = 1f;
        if (GameObject.FindGameObjectWithTag ("Enemy") == null) {
            return false;
        }
      }

      return true;
  }

  IEnumerator SpawnWave (Wave _wave) {
      state = SpawnState.SPAWNING;

      for (int i = 0; i < _wave.count; i++) {
       

        int ran = Random.Range(0, 100);

        //Probabilidade

        int e = Random.Range(0, _wave.enemies.Length);

        SpawnEnemy (_wave.enemies[e].enemyPrefab);
        yield return new WaitForSeconds (1f / _wave.rate);
      }

      state = SpawnState.WAITING;

      yield break;
  }

  void SpawnEnemy(Transform _enemy) {
      if(level ==  enemies.level){
      Transform _sp = spawnPoints[Random.Range(0, spawnPoints.Length)];
      Instantiate (_enemy, _sp.position, _sp.rotation);
     }
  }
}
avatar
Callyde Jr
Programador

Masculino PONTOS : 2453
REPUTAÇÃO : 330
Idade : 39
Áreas de atuação : Iniciante em modelagem Blender,ScketSHUP
Progamador
Ideialista

Meu Canal
https://www.youtube.com/ch
Respeito as regras :

Ver perfil do usuário http://unnygames.000webhostapp.com/

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Gwiisk em Dom Abr 01, 2018 7:57 pm

@Callyde Jr escreveu:Eu fiz um texte no script ver se funciona,
E so alterar com outro script o level desse script que ele tem que spawnar o enemy com o mesmo level
Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Wave_spawn : MonoBehaviour {

   public enum SpawnState { SPAWNING, WAITING, COUNTING };

    [System.Serializable]
    public class Enemy
    {
 public int level;
        public Transform enemyPrefab;
        [Range(0,100)]
        public float probability = 0;
    }

   [System.Serializable]
   public class Wave {
      public string name;
      public Enemy[] enemies;
      public int count;
      public float rate;
   }

   public Wave[] waves;
   private int nextWave = 0;

   public Transform[] spawnPoints;

   public float timeBetweenWaves = 5f;
   private float waveCountdown;

   private float searchCountdown = 1f;

   public SpawnState state = SpawnState.COUNTING;
   public int level = 1;

   void Start() {
        waveCountdown = timeBetweenWaves;
    }

   void Update() {

      if (state == SpawnState.WAITING) {
         if (!EnemyIsAlive ()) {
            WaveCompleted ();
         } else {
            return;
         }
      }

      if (waveCountdown <= 0) {
         if (state != SpawnState.SPAWNING) {
            StartCoroutine (SpawnWave(waves[nextWave]));
         }
      } else {
         waveCountdown -= Time.deltaTime;
      }
   }

   void WaveCompleted() {

      state = SpawnState.COUNTING;
      waveCountdown = timeBetweenWaves;

      if (nextWave + 1 > waves.Length - 1) {
         nextWave = 0;
      } else {
         nextWave++;
      }
   }

   bool EnemyIsAlive() {

      searchCountdown -= Time.deltaTime;
      if(searchCountdown <= 0f) {
         searchCountdown = 1f;
         if (GameObject.FindGameObjectWithTag ("Enemy") == null) {
            return false;
         }
      }

      return true;
   }

   IEnumerator SpawnWave (Wave _wave) {
      state = SpawnState.SPAWNING;

      for (int i = 0; i < _wave.count; i++) {
        

         int ran = Random.Range(0, 100);

         //Probabilidade

         int e = Random.Range(0, _wave.enemies.Length);

         SpawnEnemy (_wave.enemies[e].enemyPrefab);
         yield return new WaitForSeconds (1f / _wave.rate);
      }

      state = SpawnState.WAITING;

      yield break;
   }

   void SpawnEnemy(Transform _enemy) {
      if(level ==  enemies.level){
      Transform _sp = spawnPoints[Random.Range(0, spawnPoints.Length)];
      Instantiate (_enemy, _sp.position, _sp.rotation);
  }
   }
}
É bacana, mas para o que eu procuro não é o que preciso, quero ser capaz de por exemplo, dar 5% de chance de spawnar um inimigo super forte, ou seja, pode ser que ele apareça ou não na rodada, depende da sorte(ou azar né) do jogador

Gwiisk
Membro
Membro

PONTOS : 946
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Callyde Jr em Dom Abr 01, 2018 8:37 pm

Hummm etendi da uma olhada nesse
Topico
avatar
Callyde Jr
Programador

Masculino PONTOS : 2453
REPUTAÇÃO : 330
Idade : 39
Áreas de atuação : Iniciante em modelagem Blender,ScketSHUP
Progamador
Ideialista

Meu Canal
https://www.youtube.com/ch
Respeito as regras :

Ver perfil do usuário http://unnygames.000webhostapp.com/

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Gwiisk em Dom Abr 01, 2018 10:02 pm

@Callyde Jr escreveu:Hummm etendi da uma olhada nesse
Topico
Eu consegui aplicar o sistema, porém agora surgiu um problema, as wave não para de dar spawn e não passa para a proxima.

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Wave_spawn : MonoBehaviour {

   public enum SpawnState { SPAWNING, WAITING, COUNTING };

    [System.Serializable]
    public class Enemy
    {
        public Transform enemyPrefab;
        [Range(0,100)]
        public float probability = 0;
    }

   [System.Serializable]
   public class Wave {
      public string name;
      public Enemy[] enemies;
      public int count;
      public float rate;
   }

   public Wave[] waves;
   private int nextWave = 0;
   float value;

   public Transform[] spawnPoints;

   public float timeBetweenWaves = 5f;
   private float waveCountdown;

   private float searchCountdown = 1f;

   public SpawnState state = SpawnState.COUNTING;

   void Start() {
        waveCountdown = timeBetweenWaves;
    }

   void Update() {

      if (state == SpawnState.WAITING) {
         if (!EnemyIsAlive ()) {
            WaveCompleted ();
         } else {
            return;
         }
      }

      if (waveCountdown <= 0) {
         if (state != SpawnState.SPAWNING) {
            StartCoroutine (SpawnWave(waves[nextWave]));
         }
      } else {
         waveCountdown -= Time.deltaTime;
      }
   }

   void WaveCompleted() {

      state = SpawnState.COUNTING;
      waveCountdown = timeBetweenWaves;

      if (nextWave + 1 > waves.Length - 1) {
         nextWave = 0;
      } else {
         nextWave++;
      }
   }

   bool EnemyIsAlive() {

      searchCountdown -= Time.deltaTime;
      if(searchCountdown <= 0f) {
         searchCountdown = 1f;
         if (GameObject.FindGameObjectWithTag ("Enemy") == null) {
            return false;
         }
      }

      return true;
   }

   IEnumerator SpawnWave (Wave _wave) {
      state = SpawnState.SPAWNING;

      if(_wave.enemies.Length == 1)
         _wave.enemies[0].probability = 100f;

      for (int i = 0; i < _wave.count; i++) {
         int ran = Random.Range(0, 100);

         for(i = 0; i < _wave.enemies.Length; i++) {
            value += _wave.enemies[i].probability;
            if (ran < value) {
               Debug.Log(_wave.enemies[i].enemyPrefab);
               yield return i;
               break;
            }
         }
         value = 0;

         SpawnEnemy (_wave.enemies[i].enemyPrefab);
         yield return new WaitForSeconds (1f / _wave.rate);
      }

      state = SpawnState.WAITING;

      yield break;
   }

   void SpawnEnemy(Transform _enemy) {

      Transform _sp = spawnPoints[Random.Range(0, spawnPoints.Length)];
      Instantiate (_enemy, _sp.position, _sp.rotation);
   }
}

Gwiisk
Membro
Membro

PONTOS : 946
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Callyde Jr em Dom Abr 01, 2018 11:22 pm

Eu achei um exemplo na net ver ai se pode te ajudar
Probabilidades Diferentes
avatar
Callyde Jr
Programador

Masculino PONTOS : 2453
REPUTAÇÃO : 330
Idade : 39
Áreas de atuação : Iniciante em modelagem Blender,ScketSHUP
Progamador
Ideialista

Meu Canal
https://www.youtube.com/ch
Respeito as regras :

Ver perfil do usuário http://unnygames.000webhostapp.com/

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Gwiisk em Seg Abr 02, 2018 10:58 am

@Callyde Jr escreveu:Eu achei um exemplo na net ver ai se pode te ajudar
Probabilidades Diferentes
Então, consegui montar o sistema, porém tem algo estranho acontecendo, a Wave atual(No caso a primeira) não termina, ele continua spawnando inimigos indeterminadamente, não consigo achar o problema sendo que só adicionei um for dentro do spawn de wave.

Gwiisk
Membro
Membro

PONTOS : 946
REPUTAÇÃO : 0
Respeito as regras :

Ver perfil do usuário

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Callyde Jr em Seg Abr 02, 2018 1:59 pm

Ha ele fica spawnando direto sem parar?
Eu fiz um pra mim e coloquei um tipo de quantidade quando chegar a zero parar
avatar
Callyde Jr
Programador

Masculino PONTOS : 2453
REPUTAÇÃO : 330
Idade : 39
Áreas de atuação : Iniciante em modelagem Blender,ScketSHUP
Progamador
Ideialista

Meu Canal
https://www.youtube.com/ch
Respeito as regras :

Ver perfil do usuário http://unnygames.000webhostapp.com/

Voltar ao Topo Ir em baixo

DÚVIDA Re: Sistema de probabilidade de Spawn para Waves

Mensagem por Callyde Jr em Sab Abr 07, 2018 12:05 am

Voce pode adicionar EX:
Código:
public int level = 1;
public int quantidade = 5; //de enemys
public int count; //contagem de kill
bool ativado = false;
Toda vez que instanciar um enemy voce diminue a quantidade
Quando a quantidade chegar a 0 voce desativa a bool que faz parar a intanciar
Em cont  toda vez que um enemy for morto voce adiciona += 1 cont
Quando cont for igual a quantidade  voce adiciona mais um level e cont = 0
almentando agora a quantidade

level 1, quantidade   = 5
level 2 , quantidade = 8
e etc...
avatar
Callyde Jr
Programador

Masculino PONTOS : 2453
REPUTAÇÃO : 330
Idade : 39
Áreas de atuação : Iniciante em modelagem Blender,ScketSHUP
Progamador
Ideialista

Meu Canal
https://www.youtube.com/ch
Respeito as regras :

Ver perfil do usuário http://unnygames.000webhostapp.com/

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum