Menu
CoddyTech

Criação aleatória de objetos

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 53 de 67.

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, pode sair qualquer valor de min a max, incluindo os dois limites. Com ints, o próprio max fica de fora. Portanto, para rolar um dado, use 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 de array válido. 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 usar. 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 deve soltar uma caixa de um ponto aleatório acima do chão:

  • x e z: cada um pode ter qualquer valor de -4 a 4, não apenas números inteiros;
  • y: 5, para que a caixa caia no chão;
  • sem rotação.

Pressione Play e clique algumas vezes, depois Check.

Experimente você mesmo

using UnityEngine;

public class CrateDropper : MonoBehaviour
{
    public GameObject cratePrefab;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // Solte uma caixa de um ponto aleatório: x e z de -4 a 4, y = 5
        }
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Noções básicas de scripting no Unity