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ół.
Wyzwanie
ŚredniKażde kliknięcie zrzuca skrzynię z losowego miejsca nad podłogą.
- Wewnątrz instrukcji
ifobsługującej kliknięcie wybierzfloat x = Random.Range(-4f, 4f);i w ten sam sposób ustawfloat z. - 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
1Podstawy C# w Unity
Witaj, UnityZmienneLiczby dziesiętne wymagają fTekst w konsoliZmienne, które pamiętająIf i elsePorównywanie liczbPowtórka: Zbieracz monet4Wejście
Naciśnięty, przytrzymany, zwolnionyOsiePrzyciski z nazwamiPrzyciski myszyPowtórka: naładowany skok7Pętle i metody
Powtarzaj za pomocą forPętle wewnątrz pętliNapisz metodęMetody, które zwracają wynikTablicePowtórka: schody10Wyszukiwanie obiektów
Wyszukiwanie po nazwieTagiWyszukiwanie po typieReferencje lepsze niż wyszukiwanieNull w UnityPowtórka: najbliższa moneta13Projekt: Unikaj bloków
BiegaczBloki z nieba2Wpraw to w ruch
Umieść sześcianPoruszaj w każdej klatceObracaj co sekundęSteruj za pomocą klawiszyPodsumowanie: Prowadź sześcian5Wektory
Dodawanie wektorówKierunkiPrzestrzeń lokalna i globalnaPrędkość po przekątnejOdległość między obiektamiVector3 to strukturaPodsumowanie: pilot drona8Obiekty gry i komponenty
Referencje w InspectorzePobieranie komponentuBrakujące komponentyDodawanie komponentuRequireComponentPokazywanie i ukrywaniePowtórka: włącznik światła11Prefaby i tworzenie obiektów
Prefaby i InstantiateTworzenie obiektów według timeraTworzenie obiektów w siatceListy obiektówCofnij najnowszyNiszczenieLosowe tworzenie obiektówPowtórka: fajerwerkiPoćwicz samodzielnie: Edytor online Unity