Приветствую всех пользователей портала! В ходе разработки моего проекта, я остановился на реализации эффектов. Знаю, что существует весьма хорошая система частиц, в которой можно создавать практически любые эффекты. Но создание этой системы занимает немалое время в плане написания кода, поэтому я решил, так сказать, заменить/упростить эту систему на более удобную. Ну чтож, давайте начнём разработку нашей с Вами системы! Оперировать мы будем всего-лишь с одним объектом и скриптом, создающий партиклы. Создаём объект o_eff, добавляем ему 2 события - Step и Draw. В Step пишем такой код: Code image_alpha -= life; //уменьшаем прозрачность на значение из переменной life if image_alpha <= 0 {instance_destroy();} //удаляем объект, когда он станет невидимым if radius_min < radius_max {radius_min += radius_up;} //увеличиваем размер партикла до максимального заданного значения на значение переменной radius_up Как видите, код отвечает за жизнь партикла и его размеры. Теперь откройте событие Draw и отрисуйте партикл. Code draw_set_alpha(alpha); //устанавливаем прозрачность из переменной alpha draw_set_color(make_color_rgb(red, green, blue)); //устанавливаем цвет партиклов из переменных draw_circle(x, y, radius_min, 0); //и рисуем сам партикл с радиусом radius_min Как вы уже поняли, код отвечает за отрисовку партиклов, прозрачность, цвет и радиус. Объект/генератор частиц создан, но в нём полно неизвестных нам переменных, задавать значения которых мы будем скриптом. Создайте скрипт с именем make_particle и впишите туда следующий код: Code repeat (argument14) //арг14 - кол-во частиц, создаваемых за раз { with instance_create(argument0, argument1, o_eff) //применяет действия к созданому объекту { speed = argument2; //скорость полёта direction = argument3; //направление life = argument4; //жизни alpha = argument5; //прозрачность clr = argument6; //один цвет для всех. Например (134,134,134) или (150,150,150). if argument13 == true {red = clr; green = clr; blue = clr;} //если параметр общего цвета истинна else //то присваиваем всем партиклам один заданный цвет, иначе {red = argument7; green = argument8; blue = argument9;} //присваиваем произвольный radius_max = argument11; //максимальный размер radius_min = argument10; //начальный размер radius_up = argument12; //скорость увеличения размера до максимального } } Вот мы и присвоили всем переменным объекта o_eff значения. Всё, система готова! Теперь чтобы создать партиклы, используйте функцию make_particle(xcoord,ycoord,spd,dir,life,alpha,colorall,red,green,blue,radius_min,radius_max,radius_up,usecolorall,amount); подставляя нужные параметры. На этом урок окончен. Спасибо за внимание! |