Principales respuestas
Buen movimiento en 2D? (El mio no funciona bien).

Pregunta
-
Hola, he estado continuando con mi proyecto y tengo problemas al mover al sprite, ya que, este es mi código:
if (Keyboard.GetState().IsKeyDown(Keys.Left) == true)
{ desplazamientoX = -2; }
else if (Keyboard.GetState().IsKeyDown(Keys.Right) == true)
{ desplazamientoX = 2; }
else if (Keyboard.GetState().IsKeyDown(Keys.Up) == true)
{ desplazamientoY = -2; }
else if (Keyboard.GetState().IsKeyDown(Keys.Down) == true)
{ desplazamientoY = 2; }
else
{
desplazamientoX = 0;
desplazamientoY = 0;
}Y despues en la función de colisiones, checo que si no existe alguna colisión, se sume (ya sea desplazamientoX o Y) a su respectivo vector. El problema es que si me muevo a la izquierda o derecha y quiero subir o bajar, no puedo, en resumen, mis cuatro movimientos en los if's estan acomodados asi:
Left
Right
Up
Down
No puedo pasar de un movimiento hacia otro que este situado abajo, me explico: De "left" no puedo pasar a ninguno de los otros 3 (teniendo presionado left), de Right no puedo pasar a up o down (teniendo presionado right), pero sí a left, de Up no puedo pasar a Down, pero si a los anteriores ( left, right ), y así.
Necesito solucionar eso pero no encuentro una buena lógica, ya intenté de todo, porfavor ayuda.
Gracias.
lunes, 21 de junio de 2010 3:19
Respuestas
-
Prueba así:desplazamientoX = 0;desplazamientoY = 0;if (Keyboard.GetState().IsKeyDown(Keys.Left) == true){ desplazamientoX = -2; }else if (Keyboard.GetState().IsKeyDown(Keys.Right) == true){ desplazamientoX = 2; }if (Keyboard.GetState().IsKeyDown(Keys.Up) == true){ desplazamientoY = -2; }else if (Keyboard.GetState().IsKeyDown(Keys.Down) == true){ desplazamientoY = 2; }Suerte!
Para el correcto funcionamiento y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido útil por favor Vótala.
Gustavo A. Cantero
Scientia® Soluciones Informáticas
MCP - MCSD - MCTS - MCPD
http://www.scientia.com.ar
http://www.programandoamedianoche.com
http://www.gustavo-cantero.com.ar
http://twitter.com/ScientiaIT
http://facebook.com/ScientiaIT- Marcado como respuesta carlos-182 lunes, 21 de junio de 2010 14:42
lunes, 21 de junio de 2010 13:07
Todas las respuestas
-
Prueba así:desplazamientoX = 0;desplazamientoY = 0;if (Keyboard.GetState().IsKeyDown(Keys.Left) == true){ desplazamientoX = -2; }else if (Keyboard.GetState().IsKeyDown(Keys.Right) == true){ desplazamientoX = 2; }if (Keyboard.GetState().IsKeyDown(Keys.Up) == true){ desplazamientoY = -2; }else if (Keyboard.GetState().IsKeyDown(Keys.Down) == true){ desplazamientoY = 2; }Suerte!
Para el correcto funcionamiento y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido útil por favor Vótala.
Gustavo A. Cantero
Scientia® Soluciones Informáticas
MCP - MCSD - MCTS - MCPD
http://www.scientia.com.ar
http://www.programandoamedianoche.com
http://www.gustavo-cantero.com.ar
http://twitter.com/ScientiaIT
http://facebook.com/ScientiaIT- Marcado como respuesta carlos-182 lunes, 21 de junio de 2010 14:42
lunes, 21 de junio de 2010 13:07 -
Ya funcionó, muchas gracias, pero quisiera saber a que se debe que mi lógica no funcionaba y la que tú pusiste, sí.
Gracias.
lunes, 21 de junio de 2010 14:41 -
El problema estaba en que eran todos "else if", por lo tanto, al entraren una opción ya no entraba en las demás.Saludos.
Para el correcto funcionamiento y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
Si la respuesta te ha sido útil por favor Vótala.
Gustavo A. Cantero
Scientia® Soluciones Informáticas
MCP - MCSD - MCTS - MCPD
http://www.scientia.com.ar
http://www.programandoamedianoche.com
http://www.gustavo-cantero.com.ar
http://twitter.com/ScientiaIT
http://facebook.com/ScientiaITlunes, 21 de junio de 2010 14:49