Четверг, 26 Декабря 2024, 07:10

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как заставить генератор работать при рестарте
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 - второй параметр эмиттер а не тип частиц.

Исправив это все заработает даже при рестарте, но фактически будут создаваться новые системы частиц и все остальное. Вот выдержка из справки.
Цитата
Системы частицы будут жить всегда после того, как они были созданы. Так, даже если Вы изменяете комнату или повторно начинаете игру, системы и частицы остаются. Так что удостоверьтесь лучше в их уничтожении, как только Вы больше в них не нуждаетесь.
  • Страница 1 из 1
  • 1
Поиск:

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