problemas con el codigo

TTABULADOR

hola tengo un problema con mi código gml :
#region desplazamiento

#region desplazamiento

var hor = keyboard_check(vk_right) - keyboard_check(vk_left);
 
 if (hor != 0) {
	 if (place_free(x +hor * 2, y))
	 x += hor *2;
	 image_xscale = hor;
	 sprite_index = spr_player_caminar;
	 accion = "caminar"
 } else{
	 sprite_index = spr_player_descanso } 

 accion = "descanso"

 
#endregion
#region salto
if (keyboard_check_pressed(vk_space)) && collision_rectangle(x-8,y,x+8,y+1,obj_wall,false,false) {
	vspeed = -8;
} else if (vspeed < 0) {
	var _celling = collision_rectangle(x-8,y-48,x+8,y-48+vspeed,obj_wall,false,false);
	if (_celling) {
		y = _celling.y + _celling.sprite_height + 48;
		vspeed = 0;
	}
}
#endregion
#region disparo
frecuencia -= 1; 

if (keyboard_check(ord("A")) && frecuencia <= 0){
	var _shot = instance_create_layer(x +16 * image_xscale, y -15, "Instances", obj_shot);
    _shot.image_xscale = image_xscale;
	_shot.hspeed *= image_xscale;
	frecuencia = 30;
	
	 sprite_index = spr_player_ataque;
	 accion = "ataque"
 }

#endregion

el problema es el siguiente: o se muestra la animacion ( spr_player_ataque)
es como si la mostrara por un frame y luego volviera a (spr_player_descanso)
lo que genera que no se vea la animacion
me podrian ayudar

VorSandwich

No te puedo ayudar en mucho, porque no tengo mucha idea de que hace este código, pero en el principio,

if (hor != 0) {
	if (place_free(x +hor * 2, y))
	x += hor *2;
	image_xscale = hor;
        sprite_index = spr_player_caminar;
        accion = "caminar"
}

Tienes el if (place_free(x +hor * 2, y))
sin bloque { } por lo que solo afecta al x += hor * 2;
No se si te habias fijado y eso puede ser una de las razones que te este dando algo raro.

Usuarios habituales

  • VorSandwich
  • TTABULADOR