posição de cubos..
2 participantes
Página 1 de 1
posição de cubos..
Fala gente boa noite!!
vi aqui uns tutoriais do marcos sobre gerar números aleatórios sem repetir e tentei usar o mesmo sistema com a posição dos cubos
tipo.. spawno de 1 a 50 cubos nas posições x,y,z so que acaba spawnando cubos dentro de cubos '-'
gostaria de saber como posso sei lá fazer tipo uma verificação para destruir o cubo se ele aparecer no mesmo local de outro cubo
obs; mals a explicação toda embolada é porque to queimando tanto a cabeça aqui em projeto só de teste de aprendizagem mesmo que já to ate meio doido
vi aqui uns tutoriais do marcos sobre gerar números aleatórios sem repetir e tentei usar o mesmo sistema com a posição dos cubos
tipo.. spawno de 1 a 50 cubos nas posições x,y,z so que acaba spawnando cubos dentro de cubos '-'
gostaria de saber como posso sei lá fazer tipo uma verificação para destruir o cubo se ele aparecer no mesmo local de outro cubo
obs; mals a explicação toda embolada é porque to queimando tanto a cabeça aqui em projeto só de teste de aprendizagem mesmo que já to ate meio doido
speedluk- Avançado
- PONTOS : 2677
REPUTAÇÃO : 29
Idade : 32
Respeito as regras :
Re: posição de cubos..
Se você usou algum algoritmo de randomização e ainda está com dois objetos no mesmo local, é provável que você tenha algum erro na lógica...
Nesse caso, sugiro que poste seu script para que possamos ter uma ideia de onde o erro está.
Se me permite uma sugestão, use o Fisher-Yates Shuffle como algoritmo de randomização.
Ex:
legenda:
[x]ultimo item, [x]numero aleatório
Digamos que você tenha 5 números em um vetor
Você sorteia uma posição entre estes:(ex:2)
[0],[1],[2],[3],[4]
armazene o ultimo numero do array em uma variável temporária:
Temp = [4]
agora trocando a ultima posição pelo numero sorteado:
[0],[1],[2],[3],[2]
agora a posição sorteada receberá o valor de Temp;
[0],[1],[4],[3],[2]
concluindo esse ciclo, diminuímos o alcance do Random.Range() pra não pegar mais o ultimo digito;
[0],[1],[4],[3],[2]
repetimos isso até o embaralhar todo o vetor...
na prática ficaria algo assim:(Queria postar um vídeo, mas estou sem programa pra gravar, então deixo as imagens mesmo :p )
5 cubos, 10 posições:
E aqui o código, caso queira dar uma olhada:
Neste caso, não precisa apagar nenhum cubo, pois eles sempre ficariam em uma ordem diferente e principalmente, somente um em cada posição.
Nesse caso, sugiro que poste seu script para que possamos ter uma ideia de onde o erro está.
Se me permite uma sugestão, use o Fisher-Yates Shuffle como algoritmo de randomização.
Ex:
legenda:
[x]ultimo item, [x]numero aleatório
Digamos que você tenha 5 números em um vetor
Você sorteia uma posição entre estes:(ex:2)
[0],[1],[2],[3],[4]
armazene o ultimo numero do array em uma variável temporária:
Temp = [4]
agora trocando a ultima posição pelo numero sorteado:
[0],[1],[2],[3],[2]
agora a posição sorteada receberá o valor de Temp;
[0],[1],[4],[3],[2]
concluindo esse ciclo, diminuímos o alcance do Random.Range() pra não pegar mais o ultimo digito;
[0],[1],[4],[3],[2]
repetimos isso até o embaralhar todo o vetor...
na prática ficaria algo assim:(Queria postar um vídeo, mas estou sem programa pra gravar, então deixo as imagens mesmo :p )
5 cubos, 10 posições:
E aqui o código, caso queira dar uma olhada:
- Código:
using UnityEngine;
public class RandomizaCubos : MonoBehaviour
{
public Transform[] posicoes;
public Transform[] cubos;
public int[] ordem;
void FixedUpdate()
{
for (int x = 0; x < cubos.Length; x++)
{
cubos[x].transform.Rotate(0, 2, 0);
}
}
public void Randomizar()
{
FYS();
for (int x = 0; x < cubos.Length; x++)
{
cubos[x].position = posicoes[ordem[x]].position;
}
}
private void FYS()
{
int rand;
int ultimoNum = ordem.Length-1;
for(int i = ordem.Length-1; i > 0; i--)
{
rand = Random.Range(0, ultimoNum);
int temp = ordem[ultimoNum];
ordem[ultimoNum] = ordem[rand];
ordem[rand] = temp;
ultimoNum--;
}
}
}
Neste caso, não precisa apagar nenhum cubo, pois eles sempre ficariam em uma ordem diferente e principalmente, somente um em cada posição.
Isabela- Avançado
- PONTOS : 2835
REPUTAÇÃO : 260
Idade : 24
Respeito as regras :
Tópicos semelhantes
» Como transformo a posição de um objeto em outra posição?
» transformar 4 cubos em uma mesh só
» Como Destruir cubos em pedaços
» Destruir cubos em pedaços Com Um Progetil
» Pegar a posição
» transformar 4 cubos em uma mesh só
» Como Destruir cubos em pedaços
» Destruir cubos em pedaços Com Um Progetil
» Pegar a posição
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos