Muy buenas, a ver si alguien sabe... trato de dibujar en el evento draw, un outline del mismo sprite, pero sin usar el mismo sprite debajo más agrandado, que es lo que he encontrado buscando outline :S
Necesito que se dibuje SOLO el outline, ya que lo que trato es que el outline tenga un alpha de 1 y el sprite que estará encima un alpha de 0.4 y claro... si uso la clásica técnica, pues se ve todo alpha 1... me explico? :B
Se me ocurre este método
[gml]
surface_set_target( sf );
//sprite a escala
draw_clear_alpha( 0,0 );
draw_sprite_ext( sp0,0, 256,256, 1.1,1.1, 0,c_white,1 );
//dibujar solo en la parte opaca
draw_set_blend_mode_ext( bm_dest_alpha, bm_zero );
draw_rectangle_color( 0,0, 512,512, c_lime,c_green,c_teal,c_aqua, false );
draw_set_blend_mode( bm_normal );
//borrar la parte interna
draw_set_blend_mode_ext( bm_zero, bm_inv_src_alpha );
draw_sprite( sp0,0, 256,256 );
draw_set_blend_mode( bm_normal );
surface_reset_target();
[/gml]
Primero se dibuja el sprite a escala. Después se dibuja una textura o color para el borde, pero sólo sobre la parte opaca del sprite dibujado previamente. Por último se usa el sprite con tamaño normal para hacer transparente la parte interna de la superficie.
Revisa el archivo de ejemplo.
no he usado surfaces en mi vida xD he tratado de amoldarlo, pero me da error... cómo se usa?, donde, qué se edita qué no se toca? oinnk :B
Importa el archivo .gm81 para que veas cómo funciona.
Lo más complicado en ese código es el uso de los "blend modes", se podrían hacer variaciones del código con el mismo resultado.
no me había dado cuenta... pero de igual manera no me entero de nada, cuando se dibuja en surface las posiciones son muy raras, no entiendo nada T_T
PD: y yo me pregunto... si solo voy a poner outline a 4 diminutas instancias... no es mejor para la ram, que coloque dos sprites distintos con el draw din surfaces?... pregunto :/
Si, sería mejor dibujar dos sprites en lugar de una superficie y un sprite.
pues gracias, finito :B