Я хочу создать эффект освещения для своей игры. Я провел некоторое исследование и смог сделать это, нарисовав полупрозрачный квадрат и вырезав круг или произвольный спрайт. Я просмотрел этот урок здесь -> https://www.yoyogames.com/blog/476/quick-and-simple-lighting
Мой код работает, но он показывает только черный экран и не вырезает из него спрайт. Что-то мне не хватает
CREATE EVENT
////////////
surface=-1;
DRAW EVENT
//////////
colortemp=draw_get_color();
cw=camera_get_view_width(view_camera[0]);
ch=camera_get_view_height(view_camera[0]);
cx=camera_get_view_x(view_camera[0]);
cy=camera_get_view_y(view_camera[0]);
if(!surface_exists(surface)){
surface=surface_create(cw,ch);
surface_set_target(surface);
draw_set_color(c_black);
draw_set_alpha(0);
draw_rectangle(0,0,cw,ch,false);
surface_reset_target();
}
if(surface_exists(surface)){
surface_set_target(surface);
//Draws the rectangle
draw_set_color(c_black);
draw_set_alpha(0.8);
draw_rectangle(0,0,cw,ch,-1);
//Draws the sprite
gpu_set_blendmode(bm_subtract);
draw_set_color(c_white);
draw_set_alpha(1);
draw_sprite_ext(light_source,0,(player.x+player.sprite_width/2),(player.y+player.sprite_height/2),1,1,0,c_white,1);
//Resets variables
gpu_set_blendmode(bm_normal);
draw_set_color(colortemp);
draw_set_alpha(1);
//resets target
surface_reset_target();
//Draws surface
draw_surface(surface,cx,cy);
//frees the screen to prevent memory leaks
if surface_exists(surface){
surface_free(surface);
}
}