Menu
CoddyTech

Losowe tworzenie obiektów

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 68 z 85.

Random.Range(min, max) wybiera losową liczbę, a to, co może zwrócić, zależy od typu przekazanych liczb. W przypadku liczb zmiennoprzecinkowych może to być dowolna wartość od min do max, łącznie z obiema granicami. W przypadku liczb całkowitych sama wartość max jest wykluczona. Dlatego rzut kostką wymaga zakresu od 1 do 7:

int roll = Random.Range(1, 7);   // 1, 2, 3, 4, 5 lub 6
Debug.Log("You rolled " + roll);

Wersja dla liczb całkowitych wyklucza max, dzięki czemu Random.Range(0, names.Length) zawsze zwraca prawidłowy indeks tablicy. Oznacza to również, że Random.Range(-5, 5) zwraca wyłącznie liczby całkowite od -5 do 4, nawet gdy zapiszesz wynik w zmiennej typu float. Zapisz Random.Range(-5f, 5f), aby uzyskać dowolną wartość z tego zakresu.

Do określania położenia i kierunków w przestrzeni 3D Unity udostępnia dwa gotowe losowe wektory. Random.insideUnitSphere to losowy punkt wewnątrz kuli o promieniu 1, której środek znajduje się w punkcie (0, 0, 0). Random.onUnitSphere to losowy punkt na powierzchni tej kuli, czyli losowy kierunek o długości 1. transform.position + Random.insideUnitSphere * 2f wskazuje miejsce oddalone o maksymalnie 2 jednostki w dowolnym kierunku, także w górę i w dół.

challenge icon

Wyzwanie

Średni

Każde kliknięcie zrzuca skrzynię z losowego miejsca nad podłogą.

  1. Wewnątrz instrukcji if obsługującej kliknięcie wybierz float x = Random.Range(-4f, 4f); i w ten sam sposób ustaw float z.
  2. Wywołaj Instantiate(cratePrefab, new Vector3(x, 5, z), Quaternion.identity);.

Naciśnij „Graj” i kliknij kilka razy: skrzynie spadają w nowe miejsca. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class CrateDropper : MonoBehaviour
{
    public GameObject cratePrefab;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // Upuść skrzynię w losowym miejscu: x i z od -4 do 4, y = 5
        }
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity