Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: FridaFlowers en Diciembre 09, 2018, 11:42:41 PM

Título: Sprite mal recortado en surface[solucionado]
Publicado por: FridaFlowers en Diciembre 09, 2018, 11:42:41 PM
Estamos desarrollando un juego en el cual queremos lograr un efecto de parpadeo, para no tener que estár pintando el personaje de otro color por cada sprite, decidi que podiamos usar una surface, aplicarle un color plano y recortar la figura.
El problema está en que se recorta solo el limite del ultimo pixel pintado y no todo el sprite.

Los sprites son de 32x32 y la surface tambien es de 32x32, yo deduzo que debería recortarse entera entonces.
Los codigos que utilizamos son:

obj_surface_parpadeo_blanco:
create
surfa = surface_create(32, 32);
step
if (surface_exists(surfa)){

    surface_set_target(surfa);
    draw_clear_alpha(c_white, 0);
    draw_set_alpha(1);
    draw_set_color(c_white);
    draw_rectangle(0,0,32,32,false);
    draw_set_blend_mode_ext(bm_subtract, bm_src_alpha);
    draw_sprite(obj_player.sprite_index, obj_player.image_index, 16, 16);
    draw_set_blend_mode(bm_normal);
    surface_reset_target();
}

draw
if (surface_exists(surfa)) 
    draw_surface(surfa, x, y);


Ya la posicion, no importa que esté descuadrada, sino que no se esté recortando todo el area del sprite que vendría cubriendo la parte transparente.

Cómo podemos arreglarlo?  :'(
Título: Re:Sprite mal recortado en surface
Publicado por: Johann en Diciembre 09, 2018, 11:53:12 PM
creo que todo lo que se llame draw_* debe ir en evento draw, que igualmente se ejecuta cada step.
Pasa el codigo de step a draw, seguro así si funciona.
Título: Re:Sprite mal recortado en surface
Publicado por: FridaFlowers en Diciembre 10, 2018, 01:06:51 AM
Gracias por responder, la verdad eso no solucionó el problema.


De hecho encontré el problema en la pagina de texturas, al parecer se recortan por alguna razón.
Hay que ir a Global Game Settings a texture group y marcar el "No cropping".

No entiendo la verdad porqué lo hicieron así XD   
Título: Re:Sprite mal recortado en surface[solucionado]
Publicado por: 3dgeminis en Diciembre 10, 2018, 06:50:52 PM
Prueba de esta forma:
[gml]
surface_set_target(surfa)

draw_clear(c_white)

draw_set_blend_mode_ext(bm_inv_dest_alpha, bm_src_alpha)
draw_sprite(obj_player.sprite_index, obj_player.image_index, 16, 16)
draw_set_blend_mode(bm_normal)

surface_reset_target()
[/gml]

Aunque me parece a mi que tu sprite es mas grande que la surface y por eso se ven esos bordes.
Título: Re:Sprite mal recortado en surface[solucionado]
Publicado por: FridaFlowers en Diciembre 10, 2018, 09:20:28 PM
Probé tu solucion por curiosidad, pero tampoco funcionó, seguía recortandose mal.

No, son exactamente iguales, ambos de 32x32, en la imagen adjunta había puesto el sprite justamente para que se viera las medidas. Tanto el sprite como la surface tienen el mismo tamaño.