Я смотрю на адаптацию классической игры «вертолет» (то есть http://www.addictinggames.com/helicopter.html ), но я еще не выяснил, как создать движок генерации стен.
Какие-нибудь указатели на псевдокод? Меня не очень интересуют объекты посередине - только методология генерации сторон, которая увеличивается с трудом (закрывается больше, имеет более неожиданные изгибы) по ходу игры.
2d
mathematics
algorithm
davidkomer
источник
источник
Ответы:
Для этого вы можете использовать шум 1D Perlin . Вот изображение 2D шума. Я взял образцы, где красная линия, и умножил их на некоторую константу, чтобы получить зеленую линию.
Константа, на которую вы умножаете значения, будет определять высоту шума. Таким образом, вы можете легко увеличить сложность. Еще одним преимуществом шума Perlin является то, что он может генерировать мозаичный шум, так что вы можете создать, казалось бы, бесконечный уровень.
Если вы хотите создать дно и потолок, важно, чтобы вы не создавали непроходимых областей. Самым простым способом было бы просто использовать «верхнюю» часть шума (например,
1.0 - noiseValue
) в качестве потолка, а нижнюю часть (noiseValue
) - для нижней (с некоторым смещением между ними, конечно). Если это выглядит слишком скучно, вы можете также рассмотреть два близких образца, например. представьте еще одну красную пробную линию на один или два пикселя вверх или вниз. Это даст похожую, но не идентичную волну.источник
BitmapData
объект и использовать егоperlinNoise
функцию. Растровое изображение может быть 800x3 пикселей или что-то экстремальное, тогда вы можете просто извлечь значения верхней и нижней строки (что-то вроде этого(bitmap.getPixel(x,y) & 0xff) / 255.0
должно дать вам значения в0..1
диапазоне.scaler
? Значения, которые вы получите, будут в диапазоне0..255
вашего кода.