Diciembre 02, 2012, 01:25:24 PM Ultima modificación: Diciembre 02, 2012, 01:27:15 PM por malissimofilms
Buenas, ¿Qué tengo que hacer para que cuando mi personaje salte, haga el doble salto y aterrice cambie de sprite?, gracias.

Oye eso es muy dificil de hacer, nah es broma. Prueba esto a ver.
Event create
doblejump=true; //para que pueda volver a saltar

Event step
if vspeed < 12  and !place_free(x,y+1)
{gravity=0.5;}
//para establecer la gravedad.

if keyboard_check_pressed(ord("Z")) //tecla de salto use la Z
{
if !place_free(x,y+1) then {vspeed=-10;} //salto normal
if place_free(x,y+1) and doblejump then {vspeed=-10; doblejump=false;} //salto en el aire osea doble
}

if place_meeting(x,y+3,other.solid)
{doblejump=true;} //si cae sobre algun solido podra saltar de nuevo.


Event de collision contra el objPiso (objPiso tiene que ser solid=true)
move_contact_solid(direction,vspeed) vspeed=0;
//detiene la caida y podras moverte a los lados normalmente.


ahora vamos con los cambios de sprites.
Event End Step

if keyboard_check(vk_right) and keyboard_check(vk_up)  and not place_free(x,y+3)
{image_speed=0.3; sprite_index=sprDiagonalArriba; dir=45;}
else  //diagonal derecha arriba
if keyboard_check(vk_left) and keyboard_check(vk_up)  and not place_free(x,y+3)
{image_speed=0.3; sprite_index=sprDiagonalArriba; dir=135;}
else  //diagonal derecha abajo
if keyboard_check(vk_right) and keyboard_check(vk_down)  and not place_free(x,y+3)
{image_speed=0.3; sprite_index=sprDiagonalAbajo; dir=305;}
else  //diagonal abajo derecha
if keyboard_check(vk_left) and keyboard_check(vk_down)  and not place_free(x,y+3)
{image_speed=0.3; sprite_index=sprDiagonalAbajo; dir=225;}
else //diagonal abajo izquierda
if keyboard_check(vk_right) and place_free(x,y+3) and vspeed !=0
{sprite_index=sprJump; image_speed=0.3; dir=0;}
else //salto derecha
if keyboard_check(vk_left) and place_free(x,y+3) and vspeed !=0
{sprite_index=sprJump; image_speed=0.3; dir=180;}
else //salto izquierda
if keyboard_check(vk_right) and not place_free(x,y+3)
{sprite_index=sprCorre; image_speed=0.3; dir=0;}
else //corre a la derecha
if keyboard_check(vk_left) and not place_free(x,y+3)
{sprite_index=sprCorre; image_speed=0.3; dir=180;}
else  //corre a la izquierda
if keyboard_check(vk_up) and !place_free(x,y+3) and vspeed=0
{image_speed=0.2; sprite_index=sprShootUp; dir=90;}
else  //disparo vertical hacia arriba
if vspeed !=0 and !place_free(x,y+3) and !place_meeting(x,y+16,other.solid)
{sprite_index=sprJump; image_speed=0.3;}
else //si esta callendo
{sprite_index=sprCorre; image_speed=0; image_index=2; }
//solo si esta parado sin hacer nada

mmm hay un problema solo haria doble salto una vez porque dejaste el doblejump en false