Site icon Marek Winiarski

Unity3d OneLine #7 – Losowość w grach

Unity3d OneLine – problemy, które da się rozwiązać w jednej linii kodu. Dosłownie!

Linia: Jak wprowadzić losowość w grach.

Kodu będzie bardzo malutko, bo dosłownie tyle co w tytule. Linijka:

int rnd = Random.Range(A, B);
float rnd = Random.Range(Af, Bf);

No są dwie, bo możemy losować liczbę całkowitą (int) oraz zmiennoprzecinkową (float). Nasze liczby A i B oraz Af i Bf to zakresy z których losujemy liczby. Oczywiście mogą być tam też liczby ujemne.

Jeżeli chcemy wylosować liczbę zmiennoprzecinkową powinniśmy to zaznaczyć przez podanie również zmiennoprzecinkowych parametrów, czyli przykładowo:

Random.Range(-10.0F, 10.0F)

Jednak pasuje dodać trochę teorii odnośnie losowania. Tzn. system losowania stosujemy najczęściej przy wprowadzaniu elementów losowości do gry. Np. z obliczeń wynika, że gracz ma 64% szans trafienie, albo 30% na znalezienie magicznego przedmiotu w skrzyni. Jak takie coś zrealizujemy? Chodzi tutaj głównie o prawdopodobieństwo.

Musimy zacząć od tego, co znaczy że mamy 30% szans na znalezienie magicznego przedmiotu? Oznacza to, że na 100 prób w 30 próbach powinniśmy otrzymać magiczny przedmiot. Więc jak to wprowadzić do kodu:

int rnd = Random.Range(1, 100);
if(rnd < 30) {
  // dodajemy magiczny miecz
}

Czyli prosta sprawa. Losujemy liczbę od 1 do 100 i jeśli wylosowana liczba jest mniejsza od 30 to znaczy, że trafiliśmy w te 30% i dodajemy graczowi magiczny miecz.

Kwestia obliczenia samego prawdopodobieństwa zależy już od samej gry i tego od czego prawdopodobieństwo ma być uzależnione.

Ta druga część może wydawać się prozaiczna, ale bylem o to kilka razy pytany, więc stwierdziłem, że warto rozwiązać ten problem raz na zawsze.

Exit mobile version