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.