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:
como salvar rotaçao uma vez
problemas com rigidbody
Raycast ponto a ponto
Criação do menu Opnióes
MySql Unity(2018.2.14F1)
Aparecer uma caixinha em algum tempo do jogo.
Rodas de tanque
keystore Android
animator duvidas
Formação de equipe (projeto já em andamento)
Unity Network, isServer, IsLocalPlayer..
Como executar uma animação atraves de um botão?
[TUTORIAL] Sistema de Oficina de Carros
[TUTORIAL] Unity 5 - Botão contínuo usando UI (Manter pressionado)
[PEDIDO] Script de Atirar
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
[RESOLVIDO] Erro de Prefab quando realiza o Build de um projeto 3D
[____ADMINISTRAÇÃO____] Alterações IMPORTANTES no fórum.
Renderizar apenas algumas partes do mapa.
[RESOLVIDO] Água à noite?
[___COMO UTILIZAR O FÓRUM___] Principais botões e suas funções
[____APOIE O FÓRUM E O CANAL E GANHE RECOMPENSAS____]
[PACOTE 2D GRATUITO] Pacote com 17 sprites de alta qualidade para baixar!
eixos X e Z nao rotaciona junto com o play
Erro na unity
Drop Shadows
Senha jogo schultz
Como fazer um sistema para conectar objetos?
Help!!! Criarção de Shader.
Projeto Estilo DD Tank
Duvidas com ADS
[TUTORIAL] Unity 5 - Sistema básico de jogo estilo ANGRY BIRDS
problema com giro na realidade aumentada
Sistema stealth
FreezeRotation e FreezePosition RigidBody Unity
[RESOLVIDO] Instanciar randômicamente prefab acima do terreno. Unity.
Gravidade para objetos selecionados
Procura-se Modelador para Mapas
Mudar ícone do jogo pelo script
[TUTORIAL] Plants VS Zombies na Unity!
A possibilidade de importar uma Biblioteca (dll) numa classe (MonoBehavior) da Unity?
IAP e ADS: plugins obsoletos
[Em Desenvolvimento] Battles of Worlds
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
[RESOLVIDO] Linkar Script do inimigo quando o player entrar no collider dele
Ajuda sobre script para abir e fechar porta malas
site pra modelos 3d de armas
[RESOLVIDO] alguem que saiba fazer um jogo de fps pode ajuda?
Compilação do Game
[TUTORIAL] Escolher a quantos FPS (fixos) o seu jogo deverá rodar.
Snake Game - JavaScript + SVG
(Dúvida) Como acessar o sensor de movimento do Android?
[TUTORIAL] Gerenciamento de idiomas para o jogo ou app
[RESOLVIDO] Menu de um jogo com vários mapas
[TUTORIAL] Criando jogo de cartas com I.A (C# e Visual Studio) - Parte 01
USSecurity
Sawed off (Modelo 3D)
Direito autoral
Contar objetos clones
Dividir uma mesh em dois.
Procura se level designer ou diretor de arte ( REMUNERADO )
[TUTORIAL] Sistema COMPLETO de câmeras
[RESOLVIDO] Animaçao só funciona uma vez
[RESOLVIDO] Eu não consigo abrir o monodevelop
Novo Asset Sistema de Portas e Chaves
[TUTORIAL] Inteligência artificial, inimigo e AIPoints
[RESOLVIDO] Como fazer a animação executar so uma vez
[JOGO] Mega BombermOn - Pokémon + Bomberman
Meu personagem na Realidade Aumentada fica tremendo
Carregar arquivos da biblioteca
Jogo de Tabuada
ik nao funciona
DUVIDA EM SCRIPT
Cores nos materiais sem criar material
[Projeto] Line Battle
[TUTORIAL] Controle de personagem em primeira pessoa + pulo para android!
SkyBox Com qualidade Horrivel!
[RESOLVIDO] Bug/Erro da unity?
(ARQUIVO) Leia aqui como obter sucesso com seu jogo independente?
erro unity para android
MENU DE SELEÇÃO DE FASES
[PROJETO CONCLUÍDO] Defeat the Illuminatis
sombras para jogos mobile
Corcle (Mobile) - Um jogo simples com um nome estranho.
[TUTORIAL] Jogo da forca em C#
[RESOLVIDO] Dúvida com relação à "Escopo" e "Namespace" entre pastas na Unity
Problema ao rotacionar valores negativos.
Importe objeto do blender
Monodevelop
Equipe RedSkyGames Studio
Blender ao juntar algumas partes ficam mais escuro
new Vector3 (o que ele ta fazendo de errado??)(iniciante)
[TUTORIAL] Sistema de Controlador De Primeira Pessoa Com Som De Passos Aleatorios
[TUTORIAL] AI Enemy ( Jogos de terror )
[RESOLVIDO] Retornar um resultado de pagina PHP com texto formatado
[RESOLVIDO] Como Voltar o Player para o Início usando Trigger? C#
Unity - Deslizar Para Rotacionar o 'Personagem'
Como criar um poligono dinamicamente?
Instantiate
Hoje à(s) 7:58 am
Hoje à(s) 7:51 am
Hoje à(s) 6:02 am
Hoje à(s) 12:35 am
Ontem à(s) 7:56 pm
Ontem à(s) 7:24 pm
Ontem à(s) 5:19 pm
Ontem à(s) 1:40 am
Seg Dez 10, 2018 5:54 pm
Dom Dez 09, 2018 8:02 pm
Dom Dez 09, 2018 6:31 pm
Dom Dez 09, 2018 6:19 pm
Sab Dez 08, 2018 11:28 pm
Sab Dez 08, 2018 9:42 pm
Sab Dez 08, 2018 3:20 pm
Sex Dez 07, 2018 6:04 pm
Sex Dez 07, 2018 12:11 pm
Sex Dez 07, 2018 5:03 am
Qui Dez 06, 2018 11:02 pm
Qui Dez 06, 2018 8:17 pm
Qui Dez 06, 2018 6:30 pm
Qui Dez 06, 2018 6:30 pm
Qui Dez 06, 2018 6:26 pm
Qui Dez 06, 2018 5:59 pm
Qui Dez 06, 2018 1:28 pm
Qua Dez 05, 2018 8:53 pm
Qua Dez 05, 2018 11:31 am
Ter Dez 04, 2018 6:57 pm
Ter Dez 04, 2018 3:24 pm
Ter Dez 04, 2018 1:37 pm
Ter Dez 04, 2018 8:02 am
Ter Dez 04, 2018 7:50 am
Ter Dez 04, 2018 4:10 am
Ter Dez 04, 2018 3:57 am
Ter Dez 04, 2018 3:39 am
Seg Dez 03, 2018 10:45 pm
Seg Dez 03, 2018 8:47 pm
Seg Dez 03, 2018 12:11 pm
Seg Dez 03, 2018 12:08 pm
Seg Dez 03, 2018 9:09 am
Seg Dez 03, 2018 9:00 am
Seg Dez 03, 2018 5:12 am
Dom Dez 02, 2018 11:32 pm
Dom Dez 02, 2018 11:31 pm
Dom Dez 02, 2018 11:29 am
Dom Dez 02, 2018 1:51 am
Dom Dez 02, 2018 12:42 am
Sab Dez 01, 2018 9:24 pm
Sab Dez 01, 2018 9:11 pm
Sab Dez 01, 2018 1:37 pm
Sab Dez 01, 2018 1:22 pm
Sex Nov 30, 2018 4:10 pm
Sex Nov 30, 2018 10:28 am
Qui Nov 29, 2018 2:02 am
Qui Nov 29, 2018 1:11 am
Qui Nov 29, 2018 1:08 am
Qua Nov 28, 2018 3:03 pm
Qua Nov 28, 2018 3:00 pm
Qua Nov 28, 2018 1:29 pm
Qua Nov 28, 2018 4:09 am
Qua Nov 28, 2018 3:03 am
Ter Nov 27, 2018 8:49 pm
Ter Nov 27, 2018 5:50 pm
Ter Nov 27, 2018 1:46 pm
Seg Nov 26, 2018 8:29 pm
Seg Nov 26, 2018 2:56 pm
Seg Nov 26, 2018 2:55 pm
Seg Nov 26, 2018 12:43 pm
Seg Nov 26, 2018 9:33 am
Seg Nov 26, 2018 9:28 am
Dom Nov 25, 2018 11:06 pm
Dom Nov 25, 2018 9:21 am
Dom Nov 25, 2018 5:04 am
Sab Nov 24, 2018 8:41 pm
Sab Nov 24, 2018 4:52 pm
Sab Nov 24, 2018 4:03 pm
Sab Nov 24, 2018 2:33 pm
Sab Nov 24, 2018 8:49 am
Sab Nov 24, 2018 6:54 am
Sex Nov 23, 2018 4:28 pm
Sex Nov 23, 2018 1:58 pm
Sex Nov 23, 2018 1:29 pm
Sex Nov 23, 2018 12:49 pm
Sex Nov 23, 2018 12:42 pm
Qui Nov 22, 2018 7:21 pm
Qui Nov 22, 2018 12:59 pm
Qui Nov 22, 2018 10:53 am
Qui Nov 22, 2018 10:33 am
Qua Nov 21, 2018 7:41 pm
Qua Nov 21, 2018 11:09 am
Qua Nov 21, 2018 7:30 am
Ter Nov 20, 2018 10:58 pm
Ter Nov 20, 2018 4:07 pm
Ter Nov 20, 2018 2:37 pm
Ter Nov 20, 2018 12:58 pm
Seg Nov 19, 2018 11:11 pm
Seg Nov 19, 2018 7:47 pm
Seg Nov 19, 2018 7:42 pm
Seg Nov 19, 2018 2:46 pm
diegopds
Carlos Andre
diegopds
gilgsjr
gilgsjr
SuperGamer
Isabela
natanael.olimpio
gilgsjr
BRGC
Callyde Jr
luis45
Jp.Game
ueslei16
gcs
dstaroski
McbDJ
MarcosSchultz
Isabela
gilgsjr
dstaroski
dstaroski
dstaroski
francisco barroso
yVIEIRA
NKKF
francisco barroso
henriquegames501
gilgsjr
Manawydan
Zack2
yanayana
MarcosSchultz
MarcosSchultz
MarcosSchultz
Emerson Rebouças
lesgoy
Opiz
NKKF
Tegh
Tegh
Zack2
Dom3000
Dom3000
Luizdanhp
ffabim
gutozardy
diegopds
gilgsjr
Joab Artes Gráficas
SuperGamer
glauco
dstaroski
Valdir dos Santos
igorobm
igorobm
TioUV
TioUV
dstaroski
conceptfac
rZwr
Erivan
francisco barroso
tonCosta3939
Simplizãum S
ninjagamergabriel
Hube
Mago
natanael.olimpio
natanael.olimpio
MarcosSchultz
diegopds
KAYKETHEO27
NKKF
MRX
tonCosta3939
Joab Artes Gráficas
Zack2
Joab Artes Gráficas
francisco barroso
Callyde Jr
dstaroski
Joab Artes Gráficas
Joab Artes Gráficas
clroberto2005
Insurgente
diegopds
diegopds
Tegh
Samuelostgamer
TioUV
NKKF
Simplizãum S
ArysonSantos
Jmspp
gonzaga
Magnatah
conceptfac
francisco barroso

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 : 1092
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 : 1634
REPUTAÇÃO : 235
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 : 1092
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 : 2752
REPUTAÇÃO : 372
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 : 1092
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 : 2752
REPUTAÇÃO : 372
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 : 1092
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 : 2752
REPUTAÇÃO : 372
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 : 1092
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 : 2752
REPUTAÇÃO : 372
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 : 1092
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 : 2752
REPUTAÇÃO : 372
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 : 2752
REPUTAÇÃO : 372
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