Geração aleatória de objetos
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 68 de 85.
Random.Range(min, max) escolhe um número aleatório, e o que ele pode retornar depende do tipo dos números que você fornece. Com floats, qualquer valor de min a max pode ser retornado, incluindo os dois extremos. Com ints, o próprio max fica de fora. Portanto, para jogar um dado, peça de 1 a 7:
int roll = Random.Range(1, 7); // 1, 2, 3, 4, 5 ou 6
Debug.Log("You rolled " + roll);A versão com int deixa max de fora para que Random.Range(0, names.Length) seja sempre um índice válido de array. Isso também significa que Random.Range(-5, 5) fornece apenas os números inteiros de -5 a 4, mesmo quando você armazena o resultado em um float. Escreva Random.Range(-5f, 5f) para obter qualquer valor intermediário.
Para posições e direções em 3D, o Unity tem dois vetores aleatórios prontos para uso. Random.insideUnitSphere é um ponto aleatório dentro de uma esfera de raio 1 ao redor de (0, 0, 0). Random.onUnitSphere é um ponto aleatório na superfície dessa esfera, o que o torna uma direção aleatória de comprimento 1. transform.position + Random.insideUnitSphere * 2f é uma posição a até 2 unidades de distância em qualquer direção, inclusive para cima e para baixo.
Desafio
MédioCada clique solta uma caixa de um ponto aleatório acima do chão.
- Dentro do
ifdo clique, escolhafloat x = Random.Range(-4f, 4f);efloat zda mesma maneira. - Chame
Instantiate(cratePrefab, new Vector3(x, 5, z), Quaternion.identity);.
Pressione “Jogar” e clique algumas vezes: as caixas caem em novos lugares. Depois, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
public class CrateDropper : MonoBehaviour
{
public GameObject cratePrefab;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
// Solte uma caixa em uma posição aleatória: x e z de -4 a 4, y = 5
}
}
}
Todas as lições de Fundamentos de Scripting no Unity
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz11Prefabs e geração de objetos
Prefabs e InstantiateGerar objetos com um temporizadorGerar objetos em uma gradeListas de objetosRemover o mais recenteDestruirGeração aleatória de objetosRevisão: fogos de artifício6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity