Понедельник, 11 Ноября 2024, 02:21

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
сурфейс света
RekerДата: Воскресенье, 28 Октября 2018, 03:45 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Сделал сурфейс, чтобы вокруг персонажей и обьектов всегда был свет. Всё хорошо, но я хочу ещё добавить другой свет, чтобы он был поверх этого когда нужно.
На первой пикче, как работает обычный свет. Всё хорошо.
На второй я хочу чтобы он был как на первой пикче, но только другим цветом и полностью замещал первое свещение.


Вот код
obj_surf_light
Код

create

surf = surface_create(room_width,room_height);



Код

END STEP

surface_set_target (surf);
   gpu_set_blendmode(bm_normal)
   draw_clear_alpha (make_color_rgb(10,10,10), 1);
   surface_reset_target ();

//ЕСЛИ СУЩЕСТВУЕТ ИГРОК
  if (instance_exists(obj_player)) {
     var px = obj_player.x + random_range(0, 1.5);
     var py = obj_player.y + random_range(0, 1.5);
     var rr =  random_range(0, 1.5);
   
    surface_set_target (surf);
    gpu_set_blendmode(bm_subtract);
    draw_set_alpha(.35);
   draw_circle_color(px, py, 55 + rr,c_gray, c_gray, 0);
   draw_set_alpha(.75);
    draw_circle_color(px, py, 44 + rr,c_gray, c_gray, 0);
   draw_set_alpha(1);
   draw_circle_color(px, py, 31 + rr,c_gray, c_gray, 0);
    gpu_set_blendmode(bm_normal);
    surface_reset_target ();
   
  }

// ЕСЛИ ЕСТЬ ОБЬЕКТ НПС RM_6
  if (instance_exists(obj_npc_rm_6))
{
  var px = obj_npc_rm_6.x +  random_range(0, 1.5);
    var py = obj_npc_rm_6.y + random_range(0, 1.5);
    var rr =  random_range(0, 1.5);
  
     surface_set_target (surf);
                 gpu_set_blendmode(bm_subtract);// НА ПЕРВОЙ ПИКЧЕ!!
   gpu_set_blendmode(bm_add);// НА ВТОРОЙ ПИКЧЕ!!
   draw_set_alpha(.35);
  draw_circle_color(px, py, 120 + rr,make_color_rgb(46,160,232), make_color_rgb(46,160,232), 0);
  draw_set_alpha(.75);
   draw_circle_color(px, py, 84 + rr,make_color_rgb(139,196,232), make_color_rgb(139,196,232), 0);
  draw_set_alpha(1);
  draw_circle_color(px, py, 51 + rr,c_white, c_white, 0);
   gpu_set_blendmode(bm_normal);
   surface_reset_target ();
     
}



В draw я просто рисую сурфейс draw_surface(surf,0,0);

У меня есть 2 предположения. Проблема кроется в
Код

surface_set_target (surf);
   gpu_set_blendmode(bm_normal)
   draw_clear_alpha (make_color_rgb(10,10,10), 1);
   surface_reset_target ();

тк он рисует с этим цветом(make_color_rgb(10,10,10)), а не с теми которые я задаю обьекту npc.

Или же проблема со смешиванием, которое я плохо понимаю. В любом случае, надеюсь, кто-нибудь знает как мне быть. Постараюсь пока, что найти выход сам.

Добавлено (28 Октября 2018, 04:21)
---------------------------------------------
Попробовал создать ещё один сурф(в этом же объекте), для нового света.
Код

surface_set_target (surf1);
   gpu_set_blendmode(bm_normal);
   draw_clear_alpha (make_color_rgb(46,160,232), 1);
   surface_reset_target ();
   
  if (instance_exists(obj_npc_rm_6))
{
  var px = obj_npc_rm_6.x +  random_range(0, 1.5);
    var py = obj_npc_rm_6.y + random_range(0, 1.5);
    var rr =  random_range(0, 1.5);

     surface_set_target (surf1);
   gpu_set_blendmode(bm_subtract);
   draw_set_alpha(.35);
  draw_circle_color(px, py, 120 + rr,make_color_rgb(46,160,232), make_color_rgb(46,160,232), 0);
  draw_set_alpha(.75);
   draw_circle_color(px, py, 84 + rr,make_color_rgb(139,196,232), make_color_rgb(139,196,232), 0);
  draw_set_alpha(1);
  draw_circle_color(px, py, 51 + rr,c_white, c_white, 0);
   gpu_set_blendmode(bm_normal);
   surface_reset_target ();  
}




Не понимаю, почему голубой цвет стал по вверх серого.

Добавлено (28 Октября 2018, 20:34)
---------------------------------------------
Проще говоря, мне нужно, чтобы второй круг, был другого цвета.

Добавлено (28 Октября 2018, 21:06)
---------------------------------------------
Фух, ну вроде разобрался. Вроде вышло примерно то, что я хотел. Поиграл со смешиванием. Там есть парочку интересных эффектов. Достаточно интересно. Например 1 пикча, будто ты идёшь в каком нибудь зелёном тумане и видишь только перед собой.
2 пикча, что я хотел(не точь в точь, но очень близко)



Код

gpu_set_blendmode_ext(bm_src_alpha,bm_zero)
   draw_set_alpha(.35);
  draw_circle_color(px, py, 120 + rr,make_color_rgb(46,160,232), make_color_rgb(46,160,232), 0);
  draw_set_alpha(.35);
   draw_circle_color(px, py, 84 + rr,make_color_rgb(139,196,232), make_color_rgb(139,196,232), 0);
   gpu_set_blendmode(bm_subtract)
  draw_set_alpha(1);
  draw_circle_color(px, py, 51 + rr,c_white, c_white, 0);
   gpu_set_blendmode(bm_normal);
   surface_reset_target ();



Сообщение отредактировал Reker - Воскресенье, 28 Октября 2018, 21:07
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг