Saya melihat ke dalam mengadaptasi permainan "helikopter" klasik (yaitu http://www.addictinggames.com/helicopter.html ), tetapi saya belum menemukan cara untuk membuat mesin generasi dinding.
Adakah petunjuk ke pseudocode? Saya tidak begitu tertarik pada objek di tengah - hanya metodologi untuk menghasilkan sisi dengan cara yang meningkat dengan kesulitan (semakin banyak, memiliki lebih banyak kurva yang tidak terduga) saat permainan berlangsung.
2d
mathematics
algorithm
davidkomer
sumber
sumber
Jawaban:
Anda bisa menggunakan 1D Perlin noise untuk itu. Berikut gambar noise 2D. Saya mengambil sampel di mana garis merah berada dan mengalikannya dengan beberapa konstanta untuk mendapatkan garis hijau.
Konstanta Anda mengalikan nilai akan menentukan ketinggian noise. Jadi Anda bisa dengan mudah meningkatkan kesulitan. Manfaat lain dari kebisingan Perlin adalah, bahwa ia dapat menghasilkan kebisingan ubin, sehingga Anda dapat membangun tingkat yang tampaknya tidak ada habisnya.
Jika Anda ingin membuat bagian bawah dan langit-langit, penting agar Anda tidak menghasilkan area yang tidak dapat dilewati. Cara termudah adalah dengan menggunakan bagian "atas" dari kebisingan (mis.
1.0 - noiseValue
) Sebagai langit-langit dan bagian bawah (noiseValue
) untuk bagian bawah (dengan beberapa offset di antara tentu saja). Jika itu terlihat terlalu membosankan, Anda juga dapat mempertimbangkan dua sampel dekat, misalnya. bayangkan garis sampel merah lain satu atau dua piksel naik atau turun. Ini akan memberikan gelombang yang serupa, tetapi tidak sama.sumber
BitmapData
objek dan menggunakanperlinNoise
fungsinya. Bitmap dapat berukuran 800x3 piksel atau sesuatu yang ekstrem, maka Anda cukup mengekstraksi nilai-nilai garis atas dan bawah (sesuatu seperti(bitmap.getPixel(x,y) & 0xff) / 255.0
seharusnya memberi Anda nilai dalam0..1
kisaran.scaler
? Nilai yang Anda dapatkan akan berada dalam kisaran0..255
dalam kode Anda.