Hola a todos.
Me gustaría saber cómo se pueden invertir los cólores de un sprite cuando este recibe daño (como una imágen en negativo) haciendo además en efecto de parpadeo. Aqui os dejo una imagen:
(http://imageshack.com/a/img4/2635/ctzo.png)
La imagen es del juego AVGN adventures dónde se usa este efecto y es muy vistoso. Si no si alguien sabe como hacer que el enemigo tome un tono más rojizo tambien me serviría.
Yo ya sé hacer un efecto de parpadeo cambiando el alpha del objeto pero desconozco cómo se hace el efecto de negativo o de coloreado del sprite.
Muchas gracias
Puedes usar el siguiente script de GMLScripts.com:
[gml]
/*
** Usage:
** draw_rectangle_inverted(x1,y1,x2,y2)
**
** Arguments:
** x1,y1 1st corner of the rectangle
** x2,y2 2nd corner of the rectangle
**
** Returns:
** nothing, inverts the given rectangular area of the screen
**
** Notes:
** Resets blending mode to normal.
**
** GMLscripts.com
*/
{
draw_set_blend_mode_ext(bm_inv_dest_color,bm_inv_src_color);
draw_rectangle_color(argument0,argument1,argument2,argument3,c_white,c_white,c_white,c_white,0);
draw_set_blend_mode(bm_normal);
}
[/gml]
Con este script puedes invertir una porción de la vista en la que te encuentres. Para invertir solo un sprite, y no toda una pantalla, puedes hacer lo siguiente:
1. Invertir una porción de pantalla lo suficientemente grande para que contenga el sprite a invertir.
2. Dibuja encima el sprite del enemigo normal, sin ningún efecto.
3. Vuelve a invertir la misma porción de pantalla.
Así, tendrás tu sprite con los colores invertidos.
Muchas gracias por tu ayuda, pero no lo veo claro, si cambia todo un rectángulo que contenga el sprite no se verían las esquinas del mismo (fuera del sprite) también en negativo?
Otro problema que tengo es que nunca he usado scripts... :-[ Tendré que buscar algún tutorial sobre como ejecutarlos.
Hola seed86, con los tres pasos que escribí sólo se vería invertido el sprite que dibujaste. El truco está en que inviertes todo lo demás, menos el sprite del enemigo, y luego vuelves a invertir todo y entonces sólo quedará el sprite del enemigo invertido. Cuando inviertes una imagen ya invertida, esta vuelve a su situación "normal".
Los scripts son muy sencillos de usar, créeme. Échale un vistazo al manual: http://www.comunidadgm.org/manual_GM/Scripts_GML.htm No debería darte demasiados dolores de cabeza. Es simplemente copiar ese código en un script que crees nuevo, lo llamas como quieras, y ese nombre lo usas para llamar al script. Si lo llamas "draw_rectangle_inverted", lo usas en un código como "draw_rectangle_inverted(x1,y1,x2,y2)".