Hola, he comenzado hace poco a programar en DS usando las NFlib (aún estoy aprendiendo) y me encontré con un problema:
Tengo dos sprites cuadrados (uno fijo y el otro móvil) que colisionan entre sí, lo cual ya he logrado programar, pero ahora quiero detectar si el sprite móvil se está desplazando de izquierda a derecha o viceversa en el momento de la colisión, para luego llamar a una función u otra según sea el caso. También quiero agregar que el sprite móvil se mueve en todas las direcciones y que por lo general no choca con el fijo horizontalmente o verticalmente, a menudo lo hace en diagonal.
Espero su respuesta y disculpen si es tonta la pregunta, pero no pude dar con la respuesta por más vueltas que le di.
Ver lo de izquierda o derecha
Ver lo de izquierda o derecha es muy simple, coje 2 variables, asignas una a la posicion x del sprite y otra que vas a ponerle la x al final de la función, luego solo debes comparar las dos: ejemplo en pseudocodigo
var1 = x;
si var 1 > var 2
esta para la derecha
si var 1 < var 2
esta para la izquierda
var 2 = x
Ya lo demas desarrollaló a partir de eso
Be Libre my Friend.
Muchas gracias
Te agradezco mucho la respuesta, gracias a ti logré que funcionara pero me trajo errores en otra parte del código que no tiene ninguna relación (o eso creo), por eso quiero saber si lo escribí bien:
En la parte en que digo que me da problemas, lo que ocurre es que solo funciona con el jugador 1, es decir que por más que el jugador 2 sea quien haga el punto, siempre se lo da al jugador 1. En cuanto al resto funciona bien.
Sé que es un poco largo pero traté de explicarlo todo bien, aún así hay muchas partes del código que no escribí, pero porque no lo creí necesario. Si no le encuentras ningún problema avisame, que de todas formas lo buscaré yo mismo.
Desde ya, muchas gracias.
Cambia //Aquí me trae
Cambia
por:
Y me cuentas
Be Libre my Friend.
Si me pasas el code un poco
Si me pasas el code un poco mas compelto, a lo mejor puedo echarte una mano, es que si me pones // funcion va aqui, pues no se que funcion es. Si ocupa mucho usa pastebin.com
Be Libre my Friend.
Código
Aquí hay un poco más del código:
Voy a aclarar que mi homebrew es un juego de ping pong al estilo antiguo (con la pelota y las paletas rectangulares) por si sirve de algo.
Tus soluciones anteriores no me funcionaron, pero igualmente muchas gracias. Avisa si hay algo que no entiendes.
PD: Ignoren las partes del código que son innecesarias, aún tengo que limpiarlo.
PD2: Colision() es una función que yo cree para detectar más facilmente las colisiones.
prueba a cambiar las
prueba a cambiar las variables u8 a s16, no se me ocurre nada más
Solución
Te lo agradezco mucho, realmente ha funcionado, me has ayudado mucho y solucionaste mis dos problemas, por eso te digo nuevamente muchas gracias.
Puede que eso sea cosa de las
Puede que eso sea cosa de las variables. Prueba a cambiar los u8 por u16 o u32 a ver si así consigues solucionarlo ;D.
Salu2!