Combinacion de movimientos XNA.

evilsol

Hola mediavideros, vengo a consultar vuestra sabiduria.

El caso es que me hallo en la dificil tarea de hacer un juego mas o menos decente en XNA, os pongo en situacion, tengo un sprite que realiza un salto, ese salto describe una parabola en el aire hacia delante de forma natural.

Lo que yo quiero hacer es lo siguiente, quiero tener dos modalidades de salto, una vertical y otra "horizontal"(la parabola), pero claro, me gustaria que la trayectoria de ese salto vertical se pudiera modificar si en el aire presionase la tecla de avanzar hacia uno de los sentidos.

Por otro lado, la unica opcion que he contemplado para que el salto se realice hacia delante es tener pulsado el boton de avanzar previamente a haber presionado la tecla de saltar.

No se si me he explicado muy bien, tengo una gran duda acerca de este respecto, tiro de meter if dentro de if?.

quiero decir...if movimiento primero
{
if salto a posteriori
posicion.X=...
}

if no movimiento y salto= salto vertical.
{
pero if salto vertical y movimiento en el aire= recalcular la trayectoria.
}

Como lo plasmo para que quede organizado?

muchas gracias de antebrazo.

elkaoD

But what? El salto vertical y la parábola son lo mismo, sólo que la parabola lleva cierta inercia previa de ir ya andando. Si te refieres a un salto especial, es decir, que el tío pille impulso extra al saltar, pues lo tendrás que hacer tal que así:

if (botones.derecha) {
  if (personaje.enSuelo)
   personaje.addVelocidad(Vector2D(velocidadEnSuelo, 0))
  else
   personaje.addVelocidad(Vector2D(velocidadEnAire, 0))
}

if (botones.izquierda) {...}

if (botones.salto) {
  personaje.addVelocidad(Vector2D(0, velocidadImpulsoSalto))
  if (botones.derecha && !botones.izquierda) // impulso extra
    personaje.addVelocidad(Vector2D(velocidadImpulsoExtra, 0))
  else if (botones.izquierda && !botones.derecha)
    personaje.addVelocidad(Vector2D(-velocidadImpulsoExtra, 0))
}

Todo esto a lo cutre. En realidad los botones deben ser reactivos a eventos, no chequearlo en el loop, pero bueno, sirve igual.

1 respuesta
evilsol

#2 muchisimas gracias :D

esta tarde lo probare a ver que tal

Usuarios habituales

  • evilsol
  • elkaoD