[TUTORIAL] Instanciar itens em posicoes aleatorias e evitar instanciar denovo no mesmo lugar
3 participantes
Página 1 de 1
[TUTORIAL] Instanciar itens em posicoes aleatorias e evitar instanciar denovo no mesmo lugar
Fala galera, criei este script simples para instanciar algum item toda vez que você apertar " e "
O item é instanciado em alguma posicao aleatoria conforme você definir pelas variaveis MinX,MaxX,MinY,MaxY,MinZ,MaxZ
Basta colocar o script em algum objeto, linkar um prefab na variavel do objeto a ser instanciado e definir os limites das posicoes e pronto...
Se a posição já esta ocupada por algum item instanciado, você não conseguira instanciar um novo objeto ali :D
script:
O item é instanciado em alguma posicao aleatoria conforme você definir pelas variaveis MinX,MaxX,MinY,MaxY,MinZ,MaxZ
Basta colocar o script em algum objeto, linkar um prefab na variavel do objeto a ser instanciado e definir os limites das posicoes e pronto...
Se a posição já esta ocupada por algum item instanciado, você não conseguira instanciar um novo objeto ali :D
script:
- Código:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Checar : MonoBehaviour {
private List<Vector3> PosicoesJaSalvas = new List<Vector3>();
public GameObject ObjetoParaInstanciar;
public int MinX,MaxX,MinY,MaxY,MinZ,MaxZ;
private bool podeInstanciar,estaNoFor;
void Start (){
podeInstanciar = true;
estaNoFor = false;
}
void Update () {
if (Input.GetKeyDown ("e")) {
Vector3 posicaoAleatoria = new Vector3(Random.Range (MinX,MaxX),Random.Range (MinY,MaxY),Random.Range (MinZ,MaxZ));
for(int x = 0; x < PosicoesJaSalvas.Count; x++){
if(PosicoesJaSalvas[x] == posicaoAleatoria){
podeInstanciar = false;
estaNoFor = true;
Debug.Log("Posicao ja existente: "+posicaoAleatoria);
}
}
if(podeInstanciar == false && estaNoFor == true){
Debug.Log("Tente novamente");
podeInstanciar = true;
estaNoFor = false;
}
if(podeInstanciar == true && estaNoFor == false){
Instantiate (ObjetoParaInstanciar,posicaoAleatoria,Quaternion.identity);
PosicoesJaSalvas.Add (posicaoAleatoria);
}
}
}
}
Re: [TUTORIAL] Instanciar itens em posicoes aleatorias e evitar instanciar denovo no mesmo lugar
nesse script consegui complementar com meu sistema de spawn mas alguem saberia dizer como posso criar aqui uma distancia entro os inimigos? tipo um radius, porque estão instanciando todos muito proximos aos outros
queria que funcionasse exatamente do jeito que esta mas não faço ideia de como juntar aqui um sistema que controla a distancia de um a outro
queria que funcionasse exatamente do jeito que esta mas não faço ideia de como juntar aqui um sistema que controla a distancia de um a outro
speedluk- Avançado
- PONTOS : 2678
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: [TUTORIAL] Instanciar itens em posicoes aleatorias e evitar instanciar denovo no mesmo lugar
Acho que seria melhor você utilizar .Contains() para verificar se o objeto está ou não na Lista.. Não sei se ficar mais performático
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Checar : MonoBehaviour {
private List<Vector3> PosicoesJaSalvas = new List<Vector3> ();
public GameObject ObjetoParaInstanciar;
public int MinX, MaxX, MinY, MaxY, MinZ, MaxZ;
private bool podeInstanciar = true;
void Update () {
if (Input.GetKeyDown ("e")) {
Vector3 posicaoAleatoria = new Vector3 (Random.Range (MinX, MaxX), Random.Range (MinY, MaxY), Random.Range (MinZ, MaxZ));
if (PosicoesJaSalvas.Contains (posicaoAleatoria)) {
podeInstanciar = false;
Debug.Log ("Posicao ja existente: " + posicaoAleatoria);
}
if (podeInstanciar == false) {
Debug.Log ("Tente novamente");
podeInstanciar = true;
} else {
Instantiate (ObjetoParaInstanciar, posicaoAleatoria, Quaternion.identity);
PosicoesJaSalvas.Add (posicaoAleatoria);
}
}
}
}
NKKF- ProgramadorMaster
- PONTOS : 4819
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Instanciar itens em posicoes aleatorias e evitar instanciar denovo no mesmo lugar
Você pode usar um multiplicador nas variáveis, assim:speedluk escreveu:nesse script consegui complementar com meu sistema de spawn mas alguem saberia dizer como posso criar aqui uma distancia entro os inimigos? tipo um radius, porque estão instanciando todos muito proximos aos outros
queria que funcionasse exatamente do jeito que esta mas não faço ideia de como juntar aqui um sistema que controla a distancia de um a outro
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Checar : MonoBehaviour {
private List<Vector3> PosicoesJaSalvas = new List<Vector3> ();
public GameObject ObjetoParaInstanciar;
public int MinX, MaxX, MinY, MaxY, MinZ, MaxZ;
[Range (0.01f, 10)]
public float distanceX = 1f, distanceY = 1f, distanceZ = 1f;
private bool podeInstanciar = true;
void Update () {
if (Input.GetKeyDown ("e")) {
Vector3 posicaoAleatoria = new Vector3 (
Random.Range (MinX, MaxX) * distanceX,
Random.Range (MinY, MaxY) * distanceY,
Random.Range (MinZ, MaxZ) * distanceZ);
if (PosicoesJaSalvas.Contains (posicaoAleatoria)) {
podeInstanciar = false;
Debug.Log ("Posicao ja existente: " + posicaoAleatoria);
}
if (podeInstanciar == false) {
Debug.Log ("Tente novamente");
podeInstanciar = true;
} else {
Instantiate (ObjetoParaInstanciar, posicaoAleatoria, Quaternion.identity);
PosicoesJaSalvas.Add (posicaoAleatoria);
}
}
}
}
NKKF- ProgramadorMaster
- PONTOS : 4819
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [TUTORIAL] Instanciar itens em posicoes aleatorias e evitar instanciar denovo no mesmo lugar
Nossa na minha face isso ^^
deu certinho aqui brigadãaao
deu certinho aqui brigadãaao
speedluk- Avançado
- PONTOS : 2678
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Tópicos semelhantes
» Movimentar inimigo em posições aleatorias
» Criar imagem em posições aleatórias
» [TUTORIAL] Unity 2017 - Cores aleatórias em um material
» [RESOLVIDO] Duas ou Varias Lights No Mesmo Lugar
» É necessário 2 itens para fazer 1, mas ele faz mesmo que falte 1 na mochila!
» Criar imagem em posições aleatórias
» [TUTORIAL] Unity 2017 - Cores aleatórias em um material
» [RESOLVIDO] Duas ou Varias Lights No Mesmo Lugar
» É necessário 2 itens para fazer 1, mas ele faz mesmo que falte 1 na mochila!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos