Menu
CoddyTech

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.

challenge icon

Desafio

Médio

Cada clique solta uma caixa de um ponto aleatório acima do chão.

  1. Dentro do if do clique, escolha float x = Random.Range(-4f, 4f); e float z da mesma maneira.
  2. 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

Pratique por conta própria: Playground de Unity