Dúvida sobre o Aleatório
3 participantes
Página 1 de 1
Dúvida sobre o Aleatório
Gente, eu uso um script para fazer aparecer e desaparecer pessoas. Só que eu queria fazer com que isso fosse de forma aleatória. Tipo, ao invés de aparecer sempre o mesmo número de pessoas, quando eu apertar a tecla para as pessoas reaparecerem, que fosse uma quantidade aleatória, entre o 1 e 20. É possível?
Porque o peso delas interferem no funcionamento do brinquedo. Então, quanto mais pesado ele estiver, mais força vai necessitar etc.
Porque o peso delas interferem no funcionamento do brinquedo. Então, quanto mais pesado ele estiver, mais força vai necessitar etc.
pdsimulador- Avançado
- PONTOS : 3103
REPUTAÇÃO : 27
Áreas de atuação : Modelagem 3D
Respeito as regras :
Re: Dúvida sobre o Aleatório
Boa noite.
Eu fiz assim, você joga os prefabs dos NPCs e indica onde são os spawnpoints, depois define a quantidade minima e máxima de npcs que estarão no brinquedo em cada rodada.
Eu então randomizo o índice dos npcs e dos assentos e só movo eles para as posições sorteadas, não uso Destroy nem instantiate, apenas uma pool de NPCs com o numero máximo que você definiu.
O código fica assim:
Os NPCs precisam ser prefabs, e os spawnpoints são objetos vazios que definem a posição e rotação onde os NPCs vão ficar.
segue o projeto caso queira ir checando se montou certo no seu.
https://drive.google.com/file/d/1HJB4zKyy8Urzi6xNXVBcgqJt0Ci5XgXz/view?usp=sharing
Eu fiz assim, você joga os prefabs dos NPCs e indica onde são os spawnpoints, depois define a quantidade minima e máxima de npcs que estarão no brinquedo em cada rodada.
Eu então randomizo o índice dos npcs e dos assentos e só movo eles para as posições sorteadas, não uso Destroy nem instantiate, apenas uma pool de NPCs com o numero máximo que você definiu.
O código fica assim:
- Código:
using UnityEngine;
public class SpawnRandomico : MonoBehaviour
{
public Transform[] spawnPoints;
public GameObject[] prefabNPCs;
public int numMaximoNPCs = 20;
public int numMinimoNPCs = 5;
private int[] indiceNPC;
private int[] indiceAssento;
private GameObject[] poolNPCs;
private Vector3 posicaoTemporaria = new Vector3(0, -500, 0);
private void Start()
{
poolNPCs = new GameObject[numMaximoNPCs];
indiceNPC = new int[numMaximoNPCs];
indiceAssento = new int[spawnPoints.Length];
for (int i = 0; i < indiceAssento.Length; i++)
{
indiceAssento[i] = i;
}
for (int i = 0; i < numMaximoNPCs; i++)
{
poolNPCs[i] = Instantiate(prefabNPCs[Random.Range(0, prefabNPCs.Length - 1)], posicaoTemporaria, Quaternion.identity);
indiceNPC[i] = i;
}
}
public void CarregarBrinquedo()
{
indiceNPC = Randomizar(indiceNPC);
indiceAssento = Randomizar(indiceAssento);
int numNPC = numMinimoNPCs + Random.Range(0, numMaximoNPCs - numMinimoNPCs);
for (int i = 0; i < numMaximoNPCs; i++)
{
poolNPCs[i].transform.position = posicaoTemporaria;
}
for (int i = 0; i < numNPC; i++)
{
poolNPCs[indiceNPC[i]].transform.position = spawnPoints[indiceAssento[i]].position;
poolNPCs[indiceNPC[i]].transform.rotation = spawnPoints[indiceAssento[i]].rotation;
}
}
private int[] Randomizar(int[] vetor)
{
for (int i = vetor.Length-1; i > 0; i--)
{
int sort = Random.Range(0, i);
int temp = vetor[i];
vetor[i] = vetor[sort];
vetor[sort] = temp;
}
return vetor;
}
}
Os NPCs precisam ser prefabs, e os spawnpoints são objetos vazios que definem a posição e rotação onde os NPCs vão ficar.
segue o projeto caso queira ir checando se montou certo no seu.
https://drive.google.com/file/d/1HJB4zKyy8Urzi6xNXVBcgqJt0Ci5XgXz/view?usp=sharing
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: Dúvida sobre o Aleatório
Fagner escreveu:Boa noite.
Eu fiz assim, você joga os prefabs dos NPCs e indica onde são os spawnpoints, depois define a quantidade minima e máxima de npcs que estarão no brinquedo em cada rodada.
Eu então randomizo o índice dos npcs e dos assentos e só movo eles para as posições sorteadas, não uso Destroy nem instantiate, apenas uma pool de NPCs com o numero máximo que você definiu.
Boa tarde!
Cara, é exatamente isso que eu quero, e já agradeço pelo seu tempo em criar esse exemplo aí, pois ajudou bastante. Só que eu tenho dois problemas:
O primeiro é que eu preciso que os npc's sejam carregados dentro do objeto brinquedo, pois só assim eles vão se mover juntos com o brinquedo quando for ativado.
E o segundo é que eu preciso que isto seja chamado através de uma tecla ao invés de um botão na tela, pois por enquanto o mouse é usado apenas no menu.
pdsimulador- Avançado
- PONTOS : 3103
REPUTAÇÃO : 27
Áreas de atuação : Modelagem 3D
Respeito as regras :
Tópicos semelhantes
» Dúvida sobre uso do vuforia
» [DUVIDA] SPAWN DE TERRENO ALEATORIO!
» Duvida sobre o random????
» [DÚVIDA] Dúvida sobre script e rigidbody
» Duvida sobre UVs
» [DUVIDA] SPAWN DE TERRENO ALEATORIO!
» Duvida sobre o random????
» [DÚVIDA] Dúvida sobre script e rigidbody
» Duvida sobre UVs
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos