Rozumiem ze tam gdzie zostanie zmazany ma byc przezroczysty. Musisz ustawić origin na 0, 0 ( choc, jakby bylo konieczne ustawienie na srodek, wtedy usun ze skryptu kolizji z graczem kod " + sprite_get_* / 2", nic nie powinno sie zepsuc ):
GML (create)
// Zmienne mowiace ile sprite jest zmazanego
spr_left = 0;
spr_width = sprite_get_width( sprite_index );
spr_top = 0;
spr_height = sprite_get_height( sprite_index );
// Predkosc zmazywania ( ilosc pikseli na stepa )
spd_scieranie = 1;
GML (kolizja z graczem)
// Zmienna okreslajaca kierunek bohatera od obiektu
var dir;
dir = point_direction( x + sprite_get_width( sprite_index ) / 2, y + sprite_get_height( sprite_index ) / 2, gracz., gracz.y )
// Zamienianie kierunku na numer boku sprite
if( dir >= 45 ) &&( dir <= 135 ) dir = 1;
else if( dir >= 135 ) &&( dir <= 225 ) dir = 2;
else if( dir >= 225 ) &&( dir <= 315 ) dir = 3;
else dir = 0;
// Mazanie sprite
switch( dir )
{
case 0: spr_width -= spd_scieranie; break;
case 1: spr_top += spd_scieranie; break;
case 2: spr_left += spd_scieranie; break;
case 3: spr_height -= spd_scieranie; break;
}
// Akcja po zmazaniu calego
if( spr_width - spr_left <= 0 )
or( spr_height - spr_top <= 0 )
{
//...
}
GML (draw)
// Rysowanie kawalka sprite
draw_sprite_part( sprite_index, 0, spr_left, spr_top, spr_width - spr_left, spr_height - spr_top, x + spr_left, y + spr_top );