Ви можете використовувати для цього 1D Perlin-шум . Ось зображення 2D-шуму. Я взяв зразки, де є червона лінія, і помножив їх на деяку константу, щоб отримати зелену лінію.
Постійна, на яку ви множите значення, буде визначати висоту шуму. Таким чином, ви могли легко збільшити труднощі. Ще одна перевага шуму Перліна полягає в тому, що він може генерувати плитковий шум, так що ви можете створити, здавалося б, нескінченний рівень.
Якщо ви хочете створити дно та стелю, важливо не створювати жодних непрохідних областей. Найпростішим способом було б просто використовувати «верхню» частину шуму (напр. 1.0 - noiseValue
) Як стелю, а нижню частину ( noiseValue
) для нижньої (з певним зміщенням між ними, звичайно). Якщо це виглядає занадто тьмяно, ви також можете розглянути два близьких зразки, наприклад. уявіть собі ще одну червону лінію зразка на один або два пікселі вгору або вниз. Це дасть схожу, але не однакову хвилю.