Mapa de durezas

Started by Hola, December 15, 2009, 11:40:13 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Hola

Hola, tengo un problema:
Tengo un proceso prota (el protagonista del juego), y dentro de este proceso tengo escritas unas lineas que tienen por funcion detectar si el personaje está o no sobre el suelo. He puesto esto:

COLOR=MAP_GET_PIXEL(FILE,MAPPER,X,Y+30); //mapper seria el mapa que contiene las durezas
IF(COLOR<>RGB(255,0,0)) //si el color obtenido no es rojo...
Y+=2; //baja el proceso
END

Eso funciona perfectamente, pero cuando reemplazo el Y+=2 por Y+=30 para que baje mas rapido, me traspasa el suelo sin detectar nada...
Alguna manera de hacer que lo detecte igual o algun metodo mas eficaz para la deteccion de durezas?

Windgate

Si el grosor de la dureza es menor que 30 píxeles siempre existe una probabilidad de que al hacer y+=30 pase de largo la dureza xD

El método de durezas que usas creo que es el de mi tutorial, es un método que funciona, pero no es el método que realmente habría que usar...

Si estás empezando simplemente haz las durezas "más gordas" y todo funcionará bien, en cambio, si ya sabes de programación piensa que el mejor método es hacer 30 comprobaciones de dureza, pixel a pixel, antes de avanzar esos 30 píxeles tan alegremente :P

Por supuesto también hay soluciones mejores, como el motor tileado de Drumpi, pero no he tenido ocasión de ponerlas en práctica.

Ánimo, las durezas son fáciles.

PD: A ver cuando saco un tiempo y subo el tema con la gravedad... Me temo que hasta 2010 no tengo tiempo ni para ir al baño a hacer aguas mayores si no es con el portátil encima y "currando" :(
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Drumpi

Ojo, que el motor de scroll tileado sólo soluciona la parte gráfica del asunto, es decir, representar el scroll, el tema de las durezas sigue siendo trabajo del programador.
Si bien se simplifica el asunto porque un tile engloba 16x16 pixels o 32x32 pixels, no significa que sea sencillo... o si. Si sigues usando los colores de las durezas en los tiles, puedes usar el mismo método, pero si no quieres depender de ellos, la cosa se complica bastante.

De todas formas, el consejo para el problema actual es que antes de avanzar X tiles, debes asegurarte que todo el camino recorrido está libre. El interior de las cámaras acorazadas está libre y se puede estar, pero asegúrate antes de que la puerta esté abierta para poder pasar ;D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Hokutoy

Mi cutre solution, ya que no soy un master, para hacer que el y=y+1 vaya mas rapido cambia el frame; por un frame(50);
Irà el doble de ràpido  ;D

PD: Haz caso a los otros dos posts  :)

panreyes

Un ejemplo, utilizando una variable privada y_destino:

y_destino=y+30;
from y=y to y_destino;
  if(MAP_GET_PIXEL(FILE,MAPPER,X,Y+30)==rgb(255,0,0)) break; end
end

Hola

Gracias a todos por sus respuestas, me han servido!  :D