Программное разрушение объекта в Game Maker


Здравствуйте. Сегодня, я расскажу вам о том, как легко и просто создать незамысловатое программное разрушение объекта, не прибегая к ручному разделению на кусочки. Не будем долго ходить вокруг да около, приступим.

Для начала, создадим спрайт объекта, который должен будет разрушаться. Это может быть абсолютно любое изображение. Теперь создадим объект, и зададим для него недавно созданный спрайт. Теперь поместим наш объект в комнату и приготовимся писать код.

Весь код, отвечающий за разрушение, мы вынесем в отдельную функцию. Для этого создадим новый скрипт, в соответствующей папке, и назовем его scr_destroy. Открываем скрипт и начинаем творить:

for (i=0; i < argument0; i+=1)
for (j=0; j < argument1; j+=1)
{
x1=i*sprite_width/argument0
y1=j*sprite_height/argument1
obj=object_add()
object_set_sprite(obj,sprite_index)
object_event_add(obj,ev_create,0,'direction=irandom_range(30,150);
speed=irandom_range(3,7); alarm[0]=irandom_range(30,60)')
object_event_add(obj,ev_step,0,'gravity_direction=270; gravity=0.5;')
object_event_add(obj,ev_draw,0,'draw_sprite_part(sprite_index, image_index, '+string(x1)+', '+string(y1)+', sprite_width/'+string(argument0)+', sprite_height/'+string(argument1)+',x,y)')
object_event_add(obj,ev_alarm,0,'instance_destroy()')
instance_create(x+x1,y+y1,obj)
}
instance_destroy()


Вот, собственно, и весь код. Разберем его более детально. Для начала посмотрим на его суть. Что же он делает?! Все очень просто, данные строки разбивают наш спрайт на заданное количество частей. Затем, программно создается новый объект, которому назначается определенная часть спрайта, и задается поведение. argument0 и argument1 указывают на количество частиц разбиения по ширине и по высоте спрайта, соответственно.
Функция draw_sprite_part, которая задается новому объекту в событии draw, указывает, какую часть спрайта необходимо отрисовать. Так же, для созданного объекта задается поведение (в моем случае, это гравитация, скорость и направление движение, а так же уничтожение объекта, через определенный промежуток времени). Все эти действия повторяются в циклах, указанное количество раз (в зависимости от заданного количества частиц), после чего, объект, к которому применен скрипт, удаляется. Все просто.

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

scr_destroy(5,5)

Указанне аргументы означают, что объект будет разбит на 5 частей по ширине, и на 5 частей по высоте, что в совокупносте даст нам 25 кусочков. Запускаем проект, жмем клавишу и радуемся.

На сегодня все. Удачи.

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

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

www.voldimars.ru

 
 
         
     

© LunarPixel, 2011-2012