hola comunidad  :D, estoy haciendo un test, que sea lo mas parecido posible al movimiento de Mario del juego de super mario world, de SNES, en la forma "overworld", lo he intentado, pero me ocurre un bug muy feo XD, cuando el personaje anda por las rutas asignadas, va bien en forma horizontal y vertical, pero cuando tiene que ir en otra direccion, ya sea de 45? y otros, se va desviando de a poco en el camino, creo que no dobla cuando es el momento justo, tal vez una peque?a falla en el codigo...

le he asignado el reconocimiento de los objetos que en este caso serian las rutas, a traves de una variable:


for(i=0;i<=pfactor;i+=1)
   {
   for (j=-1;j<=1;j+=2)
   {objWay = instance_position(x+i*j,y+i*j,ways)}
   }


donde "pfactor" es un factor de precision, pero igual no se si servira de mucho :-[, el codigo lo hice para que me reconociera el objeto tanto como en una direccion, como en otra...

esa variable me reconoce las rutas que el personaje ha de seguir, y creo que ahi esta el problema, nose como dejar al personaje en el centro del camino, para que no se desvie, porque se sale del camino y se estropea todo XD

les dejo el programa adjunto para que lo vean y me digan si tengo algo malo en el codigo, que debo arreglar :D
El ayer es un recuerdo, el mañana un pensamiento, es el ahora en donde existo y vivo para ser feliz :D

3 soluciones:

1. Rodear las rutas con solidos, y cuando el objeto choque con los solidos vuelva a la posicion previa.

2. Hacer una rejilla del tama?o de un trozo de ruta (no me fije si es 16x16 o 32x32). Entonces Recrear el script para que se fije en la rejilla

3. (ESTA PARA MI ES LA MEJOR) hacer que las rutas tengan un mismo pariente. entonces en step poner esto:

[gml]if place_meeting(x,y,parentruta) = false {x = xprevious; y = yprevious; execute_script(elscript)}[/gml]

Asi lo que se consigue es que si se sale de la ruta, vuelva a dentro y se vuelva a iniciar el script para retomar la ruta.
Noka siempre responde a los temas con 0 respuestas ^^