Hola a todos:
mi problema es el siguiente. Tengo un personaje con 6 posibles estados. 2 para STAND izquierda o derecha, 2 para MOVE izquierda o derecha, y 2 para JUMP izquierda o derecha.
Cada uno de estos estados está compuesto por varias subimágenes.
El problema surge al saltar, cuando lo hace, inicia la animación de salto, pero cuando cae al suelo no se detiene la animación. Que es precisamente lo que quiero hacer. Una vez que toque el suelo que la animación de salto se cambie por la animación de STAND.
Os pongo aquí el código a ver que es lo que hago mal.
//Evento Step
if (place_free(x,y+1)){
gravity_direction = 270;
gravity = 2;
}
//Evento End Step
if (keyboard_check(vk_left)){
x -= global.velocidad;
sprite_index = spr_move_left;
image_single = -1;
image_speed = 0.3;
}
if (keyboard_check(vk_right)){
x += global.velocidad;
sprite_index = spr_move_right;
image_single = -1;
image_speed = 0.3;
}
if (keyboard_check(vk_nokey)){
if (sprite_index == spr_move_left){
sprite_index = spr_stand_left;
} else if (sprite_index == spr_move_right){
sprite_index = spr_stand_right;
}
}
if (!place_free(x,y+1) && keyboard_check_pressed(vk_control)){
vspeed = -20;
if (sprite_index == spr_stand_left or sprite_index == spr_move_left){
sprite_index = spr_jump_left;
if (image_index > 3){
sprite_index = spr_stand_left;
}
} else if (sprite_index == spr_stand_right or sprite_index == spr_move_right){
sprite_index = spr_jump_right;
if (image_index > 3){
sprite_index = spr_stand_right;
}
}}
Saludos y gracias
Bueno, esto en colision con el suelo. Es un sistema de gravedad sencillo (el tipico):
move_contact_solid(direction,12);
if vspeed > 0 { vspeed = 0; player_estado = 'quieto'; }
Una solución es, activar el sprite de salto sólamente si hay gravedad, de esta manera, al contactar con el suelo, la animación de salto no podría continuar.