HOLA CGM!!
Estoy haciendo un juego con sprites del Sparkster 2: Rocketnight Adventures II, como prueba piloto, pero ya tengo mis sprites.
NOTA: Sparkster 2: juego de Konami hecho para Sega Genesis.
Ya tengo resuelto el tema de saltar con un sprite y caer con otro sprite, tengo los sprites de ataque, etc. El tema es que cuando quiero que al presionar la tecla 'A' y la tecla 'Numpad4' quiero que vuele en línea recta hacia la derecha, y así sucesivamente cuando presione para arriba, para abajo y las diagonales. La tecla 'Numpad4' es la que hace que vuele el personaje, siempre y cuando se le de la dirección con las teclas 'A', 'S', 'W' o 'D'.
El problema es que no consigo tal resultado. Ya lo probe con el 'instance_change', o usando los eventos Draw, pero no consigo que mi personaje vuele en línea recta durante un periodo de 30 steps y luego retorne a su sprite original.
Yo lo que haria es hacer un objeto solo para cuando vuela. Al presionar la tecla 'Numpad4' cambias al objeto que vuela y cuando pasen los 30 steps cambias de vuelta al objeto normal
Todo depende de como hayas implementado los codigos para tu juego :P, ya que se puede hacer de todas formas, pero la programacion toma un rol importante ahi, te recomiendo que tengas una variable booleana (true o false), que identifique cuando el personaje vuela, o cuando no, ya que ahi separas el funcionamiento normal de tu personaje, con el modo en vuelo:
if (volar == false)
{
Todo lo que hace tu personaje en modo normal
}
else
{
Los codigos o acciones para que tu personaje vuele
}
Aprovechando eso, puedes accionar sólo la gravedad cuando "volar" sea falso, de lo contrario, en la parte en donde colocas los codigos para que tu personaje vuele, puedes disminuir la gravedad o dejarla en cero, y mover a tu personaje en las direcciones que tu quieras a una velocidad definida...
En lo del tiempo, casi siempre utilizo variables "temporizadoras", que las implemento asi:
if (accion = "volar")
{
volar()
if (t[0] < 30) {t[0] += 1}
else
{
accion = "normal";
t[0] = 0
}
}
ocupe un t[0] ya que si se necesitan mas temporizadores, los declaro en el evento create como t[0], t[1], ...
pero ahi hay una idea que se me ocurrió :)... ojala que te haya ayudado !!
Saludos