El sprite salta los límites

Hola, estoy realizando mi primer trabajo en director, un comecocos, funciona bien siempre que pulse sólo una tecla, pero resulta que con este código el sprite se sale fuera de los límites cuando pulso dos teclas de movimiento a la vez.
Si pulso derecha y abajo, por ejemplo, salta los límites.
Cada trozo de pared mide 50 pixels, de este modo hago un cerco para que el sprite que mueve el jugador, que también se mueve de 50 en 50 no salga de los límites.
¿Dónde está el error? Gracias.
--Movimiento jugador
--Izquierda
if keyPressed(123) then sprite(a).loch = sprite(a).loch -50
--derecha
if keyPressed(124) then sprite(a).loch = sprite(a).loch +50
--abajo
if keyPressed(125) then sprite(a).locv = sprite(a).locv +50
--arriba
if keyPressed(126) then sprite(a).locv = sprite(a).locv -50
-- PARED /JUGADOR
--izquierda
if sprite(a).loch = sprite(c).loch and sprite(a).locv = sprite(c).locv and the keyCode = 123 then sprite(a).loch = sprite(a).loch +50
--derecha
if sprite(a).loch = sprite(c).loch and sprite(a).locv = sprite(c).locv and the keyCode = 124 then sprite(a).loch = sprite(a).loch -50
--arriba
if sprite(a).loch = sprite(c).loch and sprite(a).locv = sprite(c).locv and the keyCode = 126 then sprite(a).locv = sprite(a).locv +50
--abajo
if sprite(a).loch = sprite(c).loch and sprite(a).locv = sprite(c).locv and the keyCode = 125 then sprite(a).locv = sprite(a).locv -50

1 Respuesta

Respuesta
1
Deja decirte algo, como código lo que tienes ahí esta bien, lo que estará mal sera en las restricciones de tu código, pero así no más no puedo ayudarte, si deseas me mandas el archivo fuente a mi correo que es [email protected] y así lo corro aquí y te lo corrijo ok, porque en el aire no puedo.
Ahora bien, atiende esto que a lo mejor resuelvas con esto. El caso es que estas diciendo que si el loch es igual al de la figura entonces lo mandas 50 más allá o más acá y eso es un error, tienes que comparar conque si el loch + 50 o -50 es menor que el loch de la pared entonces lo mandas a moverse así mismo con el locv porque si esperas la igualdad y no se te da nunca se hace true la condición y se te va, así que es mejor que compares antes de moverte, es decir si el key es # then si lo que tengo que hacer es sumar 50 pues pregunto si lo que tengo(aun no me muevo) más 50 se va de limite pues no me muevo o me muevo solo lo necesario para llegar al borde de la pared y así con los demás casos.
Ya sabes si no le das y quieres que te vea el código pues aquí estoy. Bye
Pepe.
Gracias por la respuesta, he seguido trabajando y ahora lo he complicado aún más, es un sokoban, pero me sucede lo mismo y de vez en cuando incluso se introduce por debajo de la caja. Ahora estoy muy ocupado maquetando, pero cuando tenga un par de días le echo un vistazo y te comento ¿OK?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas