Estoy buscando adaptar el clásico juego de "helicópteros" (es decir, http://www.addictinggames.com/helicopter.html ), pero aún no he descubierto cómo crear el motor de generación de muros.
¿Algún puntero al pseudocódigo? No me interesan tanto los objetos en el medio, solo la metodología para generar los lados de una manera que aumenta con la dificultad (se cierra en más, tiene curvas más inesperadas) a medida que avanza el juego.
2d
mathematics
algorithm
davidkomer
fuente
fuente
Respuestas:
Podrías usar el ruido 1D Perlin para eso. Aquí hay una imagen de ruido 2D. Tomé muestras donde está la línea roja y las multipliqué con alguna constante para obtener la línea verde.
La constante con la que multiplique los valores determinará la altura del ruido. Para que pueda aumentar fácilmente la dificultad. Otro beneficio del ruido de Perlin es que puede generar ruido enlosable, para que pueda construir un nivel aparentemente interminable.
Si desea crear un fondo y un techo, es importante que no genere áreas intransitables. La forma más fácil sería simplemente usar la parte "superior" del ruido (p. Ej.
1.0 - noiseValue
) Como techo y la parte inferior (noiseValue
) para la parte inferior (con cierto desplazamiento en el medio, por supuesto). Si eso parece demasiado aburrido, también podría considerar dos muestras cercanas, por ejemplo. imagine otra línea de muestra roja uno o dos píxeles hacia arriba o hacia abajo. Esto dará una onda similar, pero no idéntica.fuente
BitmapData
objeto y usar superlinNoise
función. El mapa de bits puede ser de 800x3 píxeles o algo extremo, entonces simplemente puede extraer los valores de la línea superior e inferior (algo así(bitmap.getPixel(x,y) & 0xff) / 255.0
debería darle valores en el0..1
rango.scaler
? Los valores que obtenga estarán en el rango de0..255
su código.