Как заставить генератор работать при рестарте
| |
AHTOXA82 | Дата: Суббота, 02 Марта 2013, 20:59 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Пять дней не могу разобраться с частицами, будь они не ладны. Ситуация вроде простая. Мне нужно чтобы: 1) генератор частиц был привязан к некому объекту (т.е. двигался вместе с ним); 2) генератор, при наступлении определенного события, начинал генерировать частицы при переходе в другую комнату. С первой проблемой я справился, но вот со второй не знаю что делать. Чтобы вопрос мой был более контретным разберем пример. Создаю два объекта: 1)object0 движущийся объект из которого будут вылетать частицы (в моем примере это бомба); 2) object3 объект - контроллер, который мы делаем постоянным(у меня это шахматная фигура) В событии создания контроллера прописываю:
sist = part_system_create() //создать систему частиц tip =part_type_create() //тут задаем тип (в общем-то неважно что здесь будет) part_type_shape(tip,pt_shape_pixel) part_type_size(tip,0.5,1,0,0) part_type_color_rgb(tip,158,158,120,120,20,20) part_type_blend(tip,0) part_type_life(tip,10,30) part_type_speed(tip,1,2,0,0) part_type_direction(tip,90,90,0,0)
gen = part_emitter_create(sist)//задаем генератор
Т.е. мы создали систему в которой будут создаваться частицы, задали этим частицам тип и создали генератор. Это, напомню все в событии создания объекта-контроллера. Теперь в собитии шага подвижного объета прописываем:
hspeed=1 //чтобы объект двигался
part_emitter_region(object3.sist,object3.tip,x,x+32,y,y,ps_shape_rectangle,ps_distr_linear) //самая проблемная функия. Здесь задается положение и форма площади, в которой будут генерироваться частицы part_emitter_burst(object3.sist,object3.gen,object3.tip,1) //тут определяется частицы какого типа будут генерироваться и в каком количестве
Этот метод описан на одном форуме, и все постоянно ссылаются на него. Суть в том, что в одном объекте мы создаем систему и генератор, а во втром задаем что этот генератор должен генерировать и в каком количестве.
В чем собственно вопрос? Если запустить игру в режиме редактирования, то при нажании рестатра частицы перестают генерироваться. Вопрос - почему? Проблема, собственно, заключается в том что то же самое происходит при переходе в другую комнату, несмотря на то, что объект-контроллер у меня постоянный.
Исходник: http://zalil.ru/34311095
|
|
| |
Farcuat | Дата: Воскресенье, 03 Марта 2013, 02:28 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Ты размещаешь object3 в новой комнате? Не нужно.
А при рестарте игры попробуй удалить систему частиц вручную. object3 событие game end: part_system_destroy(sist) part_type_destroy(tip)
|
|
| |
AHTOXA82 | Дата: Воскресенье, 03 Марта 2013, 03:54 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Блин, ну вот все перепробовал казалось уже, а оказывается вон оно как все решалось. Спасибо Farcuat. Ошибка моя заключалась в том, что я не удалял тип частиц. На самом деле, в приведенном тобой коде можно даже систему не удалять только тип, все работает. А я наоборот пытался удалять генераторы, системы, очищал их и т.д. Но все же, объясните мне что происходит-то? Почему надо тип удалять, что он вообще делает этот тип, зачем он нужен? Я сейчас уже вообще ничерта не понимаю. Чем отличается тип частиц, система и генератор? Как я думал. Тип задает спрайт, форму, размер, начальные кинематические параметры частиц. Т.е. это по идее менять не нужно, если в моей игре частицы будут оставаться теми же. Система нужна для того, чтобы в ней эти частицы создавались. Т.е. это как-бы среда для образования частиц. Генератор создает частицы. На самом деле я не понимаю разницы между генератором и системой. Создавать частицы можно и без генератора, есть функция
part_particles_create(ind,x,y,parttype,number)
которая похожа на
part_emitter_burst(ps,ind,parttype,number)
Расскажите, пожалуйста, кто хорошо в этом разбирается.
|
|
| |
Farcuat | Дата: Воскресенье, 03 Марта 2013, 12:14 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| part_emitter_region - второй параметр эмиттер а не тип частиц.
Исправив это все заработает даже при рестарте, но фактически будут создаваться новые системы частиц и все остальное. Вот выдержка из справки. Цитата Системы частицы будут жить всегда после того, как они были созданы. Так, даже если Вы изменяете комнату или повторно начинаете игру, системы и частицы остаются. Так что удостоверьтесь лучше в их уничтожении, как только Вы больше в них не нуждаетесь.
|
|
| |
|