Код
if point_distance(x, y, obj_hero.x, obj_hero.y) < 50 //Если дистанция меньше 50...
{
sprite_index = spr_enemy_shadow_1; //Установить на объект спрайт (анимацию?)
instance_create_depth(obj_enemy_shadow.x, obj_enemy_shadow.y, 0, obj_shadow_1) //Создать объект
instance_destroy(); //и сразу уничтожить текущий объект
}
В связи с этим не до конца понял, как анимация может не останавливаться, но да, объект сразу уничтожается.
Как альтернативу, могу посоветовать событие AnimationEnd или типа того. Сделай там проверку на установленный спрайт (sprite_index = spr_enemy_shadow_1) и уже туды пихай instance_destroy().
p.s. И я бы на твоём месте в предоставленный тобой код ещё бы (image_index=0) добавил... Хотя, х.з. что там за спрайт до этого на объекте стоял