Spawn de inimigos Aleatorio
+3
Anderson Negreiros
MarcosSchultz
Joaogabrielf13
7 participantes
Página 1 de 1
Spawn de inimigos Aleatorio
Teria com fazer um tutorial fazendo um spawn de inimigos que seja aleatorio?Tipo,tem um numero limite de spawns e ai rola um sorteio pra saber quais inimigos vao ser spawnados,exemplo,tem 10 inimigos que podem ser spawnados,ai tem o sorteio e três dos inimigos são spawnados. :D
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Você está utilizando terrain ou cenário fixo?
o spawn é para ser em lugares aleatórios ou de inimigos aleatórios ou dos 2?
o spawn é para ser em lugares aleatórios ou de inimigos aleatórios ou dos 2?
Re: Spawn de inimigos Aleatorio
Cenario fixo.
De inimigos aleatorios apenas.
De inimigos aleatorios apenas.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Dê uma olhada neste tutorial:
básicamente você fará um random.Range entre o número 0 e o número máximo para decidir a quantidade, depois um Random entre 0 e array.Lenght para decidir quais inimigos irá instanciar
seria algo +/- assim:
neste script eu deixei uma variavel para linkar um objeto vazio, que será o lugar do spawn... também deixei uma array para linkar diversos tipos de inimigos e 2 valores inteiros para decidir a quantidade que pode ser instanciada
então a quantidade é randomica e o tipo do inimigo também é randomico :D
básicamente você fará um random.Range entre o número 0 e o número máximo para decidir a quantidade, depois um Random entre 0 e array.Lenght para decidir quais inimigos irá instanciar
seria algo +/- assim:
- Código:
using UnityEngine;
using System.Collections;
public class Gerador : MonoBehaviour {
public GameObject LugarDoSpawn;
public GameObject[] inimigos; // linke inimigos aqui
public int minimoDeInimigos = 1,maximoDeInimigos = 10;//ajuste o minimo e o maximo para o sorteio
void Start () {
int quantidade = Random.Range (minimoDeInimigos, maximoDeInimigos); // aqui acontece o sorteio da quantidade de inimigos
for (int x = 0; x < quantidade; x++) {
Instantiate (inimigos[Random.Range (0,inimigos.Length)],LugarDoSpawn.transform.position,transform.rotation); // instancia um inimigo aleatorio
}
}
}
neste script eu deixei uma variavel para linkar um objeto vazio, que será o lugar do spawn... também deixei uma array para linkar diversos tipos de inimigos e 2 valores inteiros para decidir a quantidade que pode ser instanciada
então a quantidade é randomica e o tipo do inimigo também é randomico :D
Re: Spawn de inimigos Aleatorio
Obrigado Marcos!
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Deu certo,um ultimo pedido,como faço para só spawnar quando o player se aproximar?
Eu posso usar por exemplo Distancia.magnitude<10?
é que não manjo quase nada de C#
Eu posso usar por exemplo Distancia.magnitude<10?
é que não manjo quase nada de C#
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Spawn de inimigos Aleatorio
esse spawn deve acontecer quatas vezes se o player se aproximar?
por que basta utilizar um Vector3.Distance para checar a distancia entre Player e Inimigo
por que basta utilizar um Vector3.Distance para checar a distancia entre Player e Inimigo
Re: Spawn de inimigos Aleatorio
Só uma vez.
E como eu utilizo esse Vector3.Distance no script?Desculpa,é que como eu disse,eu sou noob nesse assunto.
E como eu utilizo esse Vector3.Distance no script?Desculpa,é que como eu disse,eu sou noob nesse assunto.
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Spawn de inimigos Aleatorio
básicamente assim:
isto irá pegar a distancia entre o objeto que tem a tag " Player " e o objeto que contem este script...
basta definir a distancia e pronto
- Código:
using UnityEngine;
using System.Collections;
public class Gerador : MonoBehaviour {
public GameObject LugarDoSpawn;
public GameObject[] inimigos; // linke inimigos aqui
public int minimoDeInimigos = 1,maximoDeInimigos = 10;//ajuste o minimo e o maximo para o sorteio
private GameObject jogador;
public float DistanciaParaSpawn = 10;
private int quantidade;
private bool realizarSpawn;
void Start (){
realizarSpawn = false;
jogador = GameObject.FindWithTag ("Player");
quantidade = Random.Range (minimoDeInimigos, maximoDeInimigos); // aqui acontece o sorteio da quantidade de inimigos
}
void Update () {
if(Vector3.Distance (jogador.transform.position,transform.position) <= DistanciaParaSpawn && realizarSpawn == false){
for (int x = 0; x < quantidade; x++) {
Instantiate (inimigos[Random.Range (0,inimigos.Length)],LugarDoSpawn.transform.position,transform.rotation); // instancia um inimigo aleatorio
}
realizarSpawn = true;
}
}
}
isto irá pegar a distancia entre o objeto que tem a tag " Player " e o objeto que contem este script...
basta definir a distancia e pronto
Joaogabrielf13- Avançado
- PONTOS : 3596
REPUTAÇÃO : 7
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Olá, Marcos !
Eu tenho um problema parecido com o citado na pergunta.
Meu script possui dois arrays de GameObjetos diferentes
eu faço um random.rage da primeira array dos GameObjetos e coleto e instancio apenas um GameObjetos desse array.
ai começa o problema, eu faço um random.rage da segunda array, preciso instanciar um numero "x" desses GameObjetos da segunda array, mas preciso pegar ao menos um termo que combine com o primeiro array teria alguma dica de como devo prosseguir ?
grato!!
Eu tenho um problema parecido com o citado na pergunta.
Meu script possui dois arrays de GameObjetos diferentes
eu faço um random.rage da primeira array dos GameObjetos e coleto e instancio apenas um GameObjetos desse array.
ai começa o problema, eu faço um random.rage da segunda array, preciso instanciar um numero "x" desses GameObjetos da segunda array, mas preciso pegar ao menos um termo que combine com o primeiro array teria alguma dica de como devo prosseguir ?
grato!!
Anderson Negreiros- Iniciante
- PONTOS : 3180
REPUTAÇÃO : 0
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Teria como postar o script e explicar um pouco melhor??? ficou um pouco confuso
Re: Spawn de inimigos Aleatorio
Sim, Claro!
Eu tenho um script onde possuo dentro dele dois arrays, que definiriam uma lista de objetos e a suas respectivas combinações, instancio um determinado objeto dessa lista randomicamente e preciso instanciar um numero "X" a exe: "3" três, da lista de suas combinações, onde um desses três tem que corresponder ao objeto instanciado anteriormente.
O código que tenho é esse.
grato !
Eu tenho um script onde possuo dentro dele dois arrays, que definiriam uma lista de objetos e a suas respectivas combinações, instancio um determinado objeto dessa lista randomicamente e preciso instanciar um numero "X" a exe: "3" três, da lista de suas combinações, onde um desses três tem que corresponder ao objeto instanciado anteriormente.
O código que tenho é esse.
grato !
- Código:
using UnityEngine;
using System.Collections;
public class TestandoScriptSulhueta : MonoBehaviour
{
// criando silhuetas
public GameObject[] Silhuetas;
// criando objetos
public GameObject[] objetos;
// identificador da silhueta
public GameObject Ident;
//contador de index
int ind;
//quantidade de animais
int qtdObjetos;
// numero maximo e minimo de Objetos.
public int numMaxObj;
public int numMinObj;
public Transform posSilhu;
public Transform posSilhuDois;
public Transform posObj;
//para pegar posicão inicial do objeto
public Vector3 posInic;
// Use this for initialization
void Start()
{
ind = Random.Range(0, Silhuetas.Length);
Ident = Silhuetas[ind];
Debug.Log(Ident.name);
Debug.Log(posInic);
TrabComSilhuetaEscolhida();
}
// Update is called once per frame
void Update()
{
}
public void TrabComSilhuetaEscolhida()
{
Instantiate(Ident, posSilhu.position, Quaternion.identity);
}
}
Anderson Negreiros- Iniciante
- PONTOS : 3180
REPUTAÇÃO : 0
Respeito as regras :
Re: Spawn de inimigos Aleatorio
peço desculpas, más continuo a não entender a dúvida... especificamente, nesta parte
"preciso instanciar um numero "X" a exe: "3" três"
"preciso instanciar um numero "X" a exe: "3" três"
Re: Spawn de inimigos Aleatorio
Ahahahah. Tudo bem! Talvez eu não tenha me feito entender.
Deixa eu tentar novamente.
Vamos lá!
Eu tenho dois arrays, O primeiro array eu faço um radom.range e pego um único numero aleatório dele e instancio, até ai tudo bem, certo?
Vamos a duvida. No segundo array eu quero instanciar mais de um objeto randomicamente dessa lista. Dei como exemplo: três objetos, onde um deles tem que combinar com o objeto instanciado no primeiro array. Minha duvida é: como defino ao segundo array que ao menos um dos objetos instanciados randomicamente por ele, deve combinar com o array da primeira lista ?
Espero que tenha me feito entender dessa vez hahaha...
desculpa o trabalho!
grato !
Deixa eu tentar novamente.
Vamos lá!
Eu tenho dois arrays, O primeiro array eu faço um radom.range e pego um único numero aleatório dele e instancio, até ai tudo bem, certo?
Vamos a duvida. No segundo array eu quero instanciar mais de um objeto randomicamente dessa lista. Dei como exemplo: três objetos, onde um deles tem que combinar com o objeto instanciado no primeiro array. Minha duvida é: como defino ao segundo array que ao menos um dos objetos instanciados randomicamente por ele, deve combinar com o array da primeira lista ?
Espero que tenha me feito entender dessa vez hahaha...
desculpa o trabalho!
grato !
Anderson Negreiros- Iniciante
- PONTOS : 3180
REPUTAÇÃO : 0
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Marcos no seu script o que tenho que fazer para no lugar de distancia ele instancia logo que entrar em jogo
Chilinger- MembroAvançado
- PONTOS : 4092
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Chilinger escreveu:Marcos no seu script o que tenho que fazer para no lugar de distancia ele instancia logo que entrar em jogo
Basta remover a verificação da distancia
- Código:
//Com verificação de distancia
if(Vector3.Distance (jogador.transform.position,transform.position) <= DistanciaParaSpawn && realizarSpawn == false){...}
//Sem verificação de distancia
if(realizarSpawn == false) {...}
geeksou- Designer
- PONTOS : 3836
REPUTAÇÃO : 44
Idade : 30
Respeito as regras :
Chilinger- MembroAvançado
- PONTOS : 4092
REPUTAÇÃO : 42
Idade : 30
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Puts !!! Verdade hahahahahahahahahahaah.
não acredito que esqueci de explicar isso, desculpa!
mas a ideia é a mesma,
então, digamos que na primeira lista eu tenha uma lista de objetos "a,b,c,d,e,f..."
na segunda "a1,b1,c1,d1,e1,f1..."
eu instancio randomicamente um objeto, que vou usar como exemplo o "c", e a partir disso, eu vou fazer um segundo instanciamento randômico, só que agora da segunda lista e trarei mais de um objeto. e um desses objetos, teria que ser o "c1". como eu faria isso ?
acredito que deveria usar o primeiro instanciamento para determinar o segundo, contudo estou perdido.
obs: essas letras seriam nomes de objetos mas poderia trabalhar com tags para defini-los também se isso facilitar esse processo.
desculpa mais uma vez !
valeu !
não acredito que esqueci de explicar isso, desculpa!
mas a ideia é a mesma,
então, digamos que na primeira lista eu tenha uma lista de objetos "a,b,c,d,e,f..."
na segunda "a1,b1,c1,d1,e1,f1..."
eu instancio randomicamente um objeto, que vou usar como exemplo o "c", e a partir disso, eu vou fazer um segundo instanciamento randômico, só que agora da segunda lista e trarei mais de um objeto. e um desses objetos, teria que ser o "c1". como eu faria isso ?
acredito que deveria usar o primeiro instanciamento para determinar o segundo, contudo estou perdido.
obs: essas letras seriam nomes de objetos mas poderia trabalhar com tags para defini-los também se isso facilitar esse processo.
desculpa mais uma vez !
valeu !
Anderson Negreiros- Iniciante
- PONTOS : 3180
REPUTAÇÃO : 0
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Elaborei um alógica bastante simples para instanciar um item e ter um correspondente na próxima sequência, sem nunca repetir o mesmo instantiate:
Más este sistema requer algumas coisas, como:
1 - as 2 listas devem ter no mínimo 4 elementos
2 - a lista 2 deve ter mais elementos ou o mesmo número de elementos da lista 1.
Outra coisa... aconselho muito cuidado ao lidar com o while, pois se você não manja muito de programação, pode acabar travando a Unity por fazer loops infinitos... dê uma olhada no vídeo para entender:
- Código:
using UnityEngine;
using System.Collections;
public class Criar : MonoBehaviour {
public GameObject[] Lista1, Lista2;// ambas as listas tem 6 objetos em cada uma
private int numSelecionado, numAleatorio1, numAleatorio2;
void Start () {
numSelecionado = Random.Range (0, Lista1.Length);
Instantiate (Lista1 [numSelecionado], transform.position, transform.rotation);
Instantiate (Lista2 [numSelecionado], transform.position, transform.rotation);
//
numAleatorio1 = Random.Range (0, Lista2.Length);
while (numAleatorio1 == numSelecionado) {
numAleatorio1 = Random.Range (0, Lista2.Length);
}
//
numAleatorio2 = Random.Range (0, Lista2.Length);
while (numAleatorio2 == numSelecionado || numAleatorio2 == numAleatorio1) {
numAleatorio2 = Random.Range (0, Lista2.Length);
}
//
Instantiate (Lista2 [numAleatorio1], transform.position, transform.rotation);
Instantiate (Lista2 [numAleatorio2], transform.position, transform.rotation);
}
}
Más este sistema requer algumas coisas, como:
1 - as 2 listas devem ter no mínimo 4 elementos
2 - a lista 2 deve ter mais elementos ou o mesmo número de elementos da lista 1.
Outra coisa... aconselho muito cuidado ao lidar com o while, pois se você não manja muito de programação, pode acabar travando a Unity por fazer loops infinitos... dê uma olhada no vídeo para entender:
Re: Spawn de inimigos Aleatorio
Valeu, Marcos!
era mais ou menos isso.
Tenho assistido a algumas playlists e acompanhado seu canal, muito bom por sinal,
Parabéns !
tava a mais ou menos um ano sem programar e ele tem me tirado muitas duvidas (y)
Valeu !
era mais ou menos isso.
Tenho assistido a algumas playlists e acompanhado seu canal, muito bom por sinal,
Parabéns !
tava a mais ou menos um ano sem programar e ele tem me tirado muitas duvidas (y)
Valeu !
Anderson Negreiros- Iniciante
- PONTOS : 3180
REPUTAÇÃO : 0
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Revivendo tópico, desculpe..
Eu tenho uma dúvida bem parecida com essa, porém não tenho ideia de onde começar.
Seguinte, queria fazer algo tipo castle defender..queria por um objeto no centro da tela, com alguns pontos envolta dele e os inimigos surgissem de vários cantos da tela..de forma aleatória.
Seriam 3 tipos de inimigos inicialmente, cada 1 de 1 cor do RGB..e perto do ponto central, teriam que serem feitas "linhas" como se fossem muros para impedir os inimigos de acertar o centro, só que a linha também terá 3 cores, por exemplo, os inimigos verdes "morrem" somente quando tocam a parede verde, caso eles toquem na parede de outra cor, eles ganham algum tipo de bonus..
Acho que não consegui me explicar muito bem..
Mas, é mais ou menos isso..alguém poderia me dar uma direção??
Obrigado desde já..=D
Eu tenho uma dúvida bem parecida com essa, porém não tenho ideia de onde começar.
Seguinte, queria fazer algo tipo castle defender..queria por um objeto no centro da tela, com alguns pontos envolta dele e os inimigos surgissem de vários cantos da tela..de forma aleatória.
Seriam 3 tipos de inimigos inicialmente, cada 1 de 1 cor do RGB..e perto do ponto central, teriam que serem feitas "linhas" como se fossem muros para impedir os inimigos de acertar o centro, só que a linha também terá 3 cores, por exemplo, os inimigos verdes "morrem" somente quando tocam a parede verde, caso eles toquem na parede de outra cor, eles ganham algum tipo de bonus..
Acho que não consegui me explicar muito bem..
Mas, é mais ou menos isso..alguém poderia me dar uma direção??
Obrigado desde já..=D
VictaoxD- Iniciante
- PONTOS : 2876
REPUTAÇÃO : 0
Idade : 35
Áreas de atuação : Game Desginer - Programação - Modelagem (Status Iniciante)
Respeito as regras :
Re: Spawn de inimigos Aleatorio
Olá, tente procurar por Line Renderer, junto ao OnTriggerEnter e/ou OnCollisionEnter, assim você consegue fazer tudo isto..
Além disto, se quiser uma ajuda, entre em contato comigo via Discord: Souris#1792.
Por favor, informe a plataforma do seu jogo também.
LINE RENDERER
https://docs.unity3d.com/Manual/class-LineRenderer.html
https://docs.unity3d.com/ScriptReference/LineRenderer.html
https://docs.unity3d.com/ScriptReference/LineRenderer.SetPosition.html
OnCollisionEnter
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter.html
OnTriggerEnter
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerEnter.html
https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html
Utilidade
https://docs.unity3d.com/ScriptReference/Random.ColorHSV.html
https://forum.unity.com/threads/create-random-colors.12031/
https://answers.unity.com/questions/871400/random-color.html
Além disto, se quiser uma ajuda, entre em contato comigo via Discord: Souris#1792.
Por favor, informe a plataforma do seu jogo também.
LINE RENDERER
https://docs.unity3d.com/Manual/class-LineRenderer.html
https://docs.unity3d.com/ScriptReference/LineRenderer.html
https://docs.unity3d.com/ScriptReference/LineRenderer.SetPosition.html
OnCollisionEnter
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnCollisionEnter.html
OnTriggerEnter
https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerEnter.html
https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html
Utilidade
https://docs.unity3d.com/ScriptReference/Random.ColorHSV.html
https://forum.unity.com/threads/create-random-colors.12031/
https://answers.unity.com/questions/871400/random-color.html
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Tópicos semelhantes
» Script de Spawn Aleatório
» [DUVIDA] SPAWN DE TERRENO ALEATORIO!
» Limite de spawn e respawn de inimigos
» [TUTORIAL] Script de Spawn Aleatório
» Como parar o spawn aleatório?
» [DUVIDA] SPAWN DE TERRENO ALEATORIO!
» Limite de spawn e respawn de inimigos
» [TUTORIAL] Script de Spawn Aleatório
» Como parar o spawn aleatório?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos