Galaxy2D Tutorials Галактика 2D
Частицы.

Применение частиц очень удобно, когда необходимо анимировать много однотипных объектов. Вместо того чтобы работать с каждым объектом в отдельности, Вы только определяете правила, по которым они перемещаются и изменяют форму.

 

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

 

Использование частиц в играх

 

Теперь, когда Вы знаете, что это такое, пора задуматься, а что хорошего частицы могут привнести в Ваши игры. Для начала их можно использовать для создания пуль (лазерных лучей или ракет) в action-играх. В аркадах, они могут использоваться, чтобы моделировать дождь или “адовы камни”, как в "Jumpman". Можно создавать движущиеся звезды в играх жанра научной фантастики. Ну и, наконец, частицы можно использовать для реализации перемещения врагов. Конечно, Вы можете начать сами писать эффекты взрывов, но, с другой стороны, можете использовать уже написанный мною код (mkexpl.zip или другой пример explosionMaker.zip) :-)

 

Реализация

 

Я предлагаю использовать связанный список, чтобы хранить данные для каждой частицы, так как это позволит Вам добавлять новые частицы, тогда когда Вы захотите (это, к примеру, важно для создания фейерверка). Если Вы используете структурный подход написания программы, Вам нужна структура, чтобы хранить данные для каждой частицы, подпрограммы инициализации, подпрограммы модификации и подпрограммы рисования. Если Вы используете объектно-ориентированный (ОО) подход, замените каждую "подпрограмму" на "метод" и "инициализацию" с "конструктором", и так далее. Фактически, использование OO не имеет смысл. Выполните это как абстрактный класс, используя виртуальные методы для модификации и рисования, и вы сделаете вашу жизнь намного более простой.

 

Теперь, давайте подумаем о данных, которые нам будут нужны. Это в первую очередь, конечно, позиция и скорость. “Продолжительность жизни” частицы необходима, если Вы хотите автоматически уничтожать их по прошествии некоторого времени. Это удобно для фейерверка и пуль с ограниченной дальностью полета. Так же можно использовать массу, цвет и форму.

 

Где взять код?

 

Интересный вопрос. У меня есть исходники для прокрутки и отображения псевдотрехмерного звездного пространства, но я сомневаюсь, что Вам будет это интересно. Вы можете загрузить исходный код и программу (stars.zip), если хотите (написано на C, скомпилировано с использованием djgpp и jlib). (Примечание переводчика: к сожалению, ни кода, ни программы не осталось, если Вы хотите, то можете посмотреть более подробную статью про частицы: Урок 19. Машина моделирования частиц с использованием полосок из треугольников).

 

В заключении

 

Применение частиц может сделать Вашу жизнь гораздо легче. Я всего лишь обрисовал возможности этого механизма.

 

Lennart Steinke

PMG  16 марта 2004 (c)  Сергей Анисимов, Сергей Иванов