Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: aggro en Agosto 08, 2014, 06:04:48 PM

Título: problemas con evento DRAW
Publicado por: aggro en Agosto 08, 2014, 06:04:48 PM
Hola.... mi problema es el siguiente:

Tengo un objeto, el cual tiene 2 sprites distintos, los que necesito que cambien según el valor de una variable que llame "dibujo"
y escribi en el evento draw:

if dibujo=0{draw_sprite_ext(spr_bunker2,0,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);}
if dibujo=1{draw_sprite_ext(spr_bk_disparo2,-1,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);}

el asunto es que hace el cambio de sprite pero muestra solo la primera subimagen, el cambio debe hacerse cuando se le acerca un objeto:

if distance_to_object(enemigo1)<=200
{
dibujo=1;
}
else 
{
dibujo=0;
}
por favor ayuda.... GRACIAS....
Título: Re:problemas con evento DRAW
Publicado por: elviskelley en Agosto 08, 2014, 07:10:11 PM
if dibujo=0{draw_sprite_ext(spr_bunker2,0,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);}
if dibujo=1{draw_sprite_ext(spr_bk_disparo2,-1,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);}
Usar varios if cuando comparas una misma variable crea lag y un juego oco optimisado.
usa mejor un switch y case.

switch (dibujo)
{
case 0: draw_sprite_ext(spr_bunker2,-1,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha); break;
case 1: draw_sprite_ext(spr_bk_disparo2,-1,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha); break;
}
Título: Re:problemas con evento DRAW
Publicado por: aggro en Agosto 08, 2014, 09:59:54 PM
elviskelley tienes razón con lo de optimizar... revisando me di cuenta que puedo hacer lo mismo con otros códigos.... con respecto al error que tenia le agregue "image_speed=1;" y me mostró el sprite como corresponde..

switch (dibujo)
{
case 0: draw_sprite_ext(spr_bunker2,-1,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);image_speed=1; break;
case 1:draw_sprite_ext(spr_bk_disparo2,-1,x,y,image_xscale,image_yscale,image_angle,image_blend,image_alpha);image_speed=1;
break;
}