Создание эффекта спички в Game Maker


Здравствуйте. Сегодня, я хотел бы вам представить небольшой урок по созданию горящей спички. Думаю, он мало кому будет полезен, но, возможно, кому-нибудь пригодится. Итак, начнем.
Первое, что нам понадобится, это приготовить спрайт нашей спички. Спрайт нужен в двух кадрах: Первый - это целая спичка, а второй - сгоревшая. Для примера можете использовать мой спрайт, приведенный ниже.

Назовем спрайт spr_spch и уставим для него точку начала отсчета соответствующую месту возникновения пламени. В моем случае, это точка 30:70. С графической частью закончили, теперь переходим к созданию объектов. Их у нас будет всего два: obj_start - который отвечает за место возникновения пламени, и obj_fire - который является непосредственно огнем.
В объекте obj_start создадим событие Create, в котором пишем следующее

i=0
fire=1


Первая переменная отвечает за смещение пламени, а вторая показывает горит огонь (1) или нет (0).

Теперь создадим событие Step, в котором будет происходить смещение нашего огня.

if fire=1
{
instance_create(x, y+i, obj_fire)
if i<50
i+=1.3
else
i+=0.3
}

if i>250
fire=0


Этот код делает следующее: если огонь горит, то создается объект пламени. Причем место его создания постоянно смещается вниз на i. Когда смещение достигает определенного значения, то огонь перестает гореть.

Помимо смещения огня, нужно реализовать и смену спрайта спички на сгоревшую. Для этого в событие Draw напишем следующие строчки кода:

draw_sprite_part(spr_spch,0,0,0+i,83,357,x-30,y+i)
draw_sprite_part(spr_spch,1,0,0,83,0+i,x-30,y)


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

На этом с объектом obj_start мы закончили, перейдем к пламени. В объекте obj_fire в событии Create объявим переменную i=0. В данном случае, она будет отвечать за изменение цвета пламени.

И наконец самое главное и последнее - событие Draw. В нем будет происходить рисование пламени.

direction=90+(irandom_range(-30,30))
speed=3
draw_set_blend_mode(bm_add)
draw_circle_color(x, y, irandom_range(35,40), make_color_rgb(128-i*2, 64-i, 0), c_black, 0)
i+=1
if i>64 instance_destroy()
draw_set_blend_mode(bm_normal)


Разберем его построчно.
Первая строка задает направление движения огня (вверх) с отклонением на 30 градусов в обе стороны (чтобы заставить огонь дергаться).
Вторая строка, как понятно, задает скорость пламени, позволяя его частицам подниматься вверх.
Далее самое интересное. Строка draw_set_blend_mode(bm_add) включает режим смешивания, дающий эффект прозрачности кромкам огня. Частицы огня представляют собой круги, которые рисуются функцией draw_circle_color. Круги создаются разного радиуса, а их цвет меняется с течением времени make_color_rgb(128-i*2, 64-i, 0), что делает огонь неоднородным. После того, как цвет пламени изменился до определенного состояния, пламя удаляется и возвращается нормальный режим смешивания.

Ну вот и всё. Можете разместить спичку в комнате и проверить. Исходник так же прилагается. Удачи.

НазадИСХОДНИКДата: 06.05.2012

 
    
    
Наши партнеры:

www.voldimars.ru

 
 
         
     

© LunarPixel, 2011-2012