Zastanawiam się nad przystosowaniem klasycznej gry „helikoptera” (tj. Http://www.addictinggames.com/helicopter.html ), ale jeszcze nie wymyśliłem, jak stworzyć silnik generacji ścian.
Jakieś wskaźniki do pseudokodu? Nie interesują mnie obiekty pośrodku - tylko metodologia generowania boków w sposób, który zwiększa się z trudem (zamyka się bardziej, ma więcej nieoczekiwanych zakrętów) w miarę postępu gry.
2d
mathematics
algorithm
davidkomer
źródło
źródło
Odpowiedzi:
Możesz do tego użyć szumu 1D Perlin . Oto obraz szumu 2D. Pobrałem próbki tam, gdzie jest czerwona linia i pomnożyłem je z pewną stałą, aby uzyskać zieloną linię.
Stała, przez którą mnożone są wartości, określa wysokość hałasu. Możesz więc łatwo zwiększyć trudność. Kolejną zaletą hałasu Perlina jest to, że może on generować hałas, który można układać w płytki, dzięki czemu można zbudować pozornie nieskończony poziom.
Jeśli chcesz utworzyć dno i sufit, ważne jest, aby nie generować żadnych nieprzejezdnych obszarów. Najłatwiejszym sposobem byłoby po prostu użycie „górnej” części hałasu (np.
1.0 - noiseValue
) Jako sufitu, a dolnej części (noiseValue
) dolnej (oczywiście z pewnym przesunięciem pomiędzy). Jeśli to wygląda zbyt nudno, możesz również rozważyć dwie bliskie próbki, np. wyobraź sobie kolejną czerwoną próbkę o jeden lub dwa piksele w górę lub w dół. To da podobną, ale nie identyczną falę.źródło
BitmapData
obiekt i użyć jegoperlinNoise
funkcji. Mapa bitowa może mieć rozdzielczość 800 x 3 pikseli lub coś ekstremalnego, a następnie można po prostu wyodrębnić górne i dolne wartości (coś w rodzaju(bitmap.getPixel(x,y) & 0xff) / 255.0
powinno dać wartości z0..1
zakresu.scaler
? Otrzymane wartości będą w zakresie0..255
twojego kodu.