locked
Buen movimiento en 2D? (El mio no funciona bien). RRS feed

  • 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