Лучшие компьютерные игры

СОЗДАЁМ ИГРУПАНЕЛЬ ИНСТРУМЕНТОВ

Автор материала:
Ричард Псмит (Андрей Ленский)
Опубликовано в журнале
«Лучшие компьютерные игры»
№10 (47) октябрь 2005

Частицы и спрайты

Даже в двумерных движках в наше время все труднее обойтись без частиц, а в трехмерных это просто невозможно. Делать взрывы и тому подобные эффекты спрайтами или специальными моделями и некрасиво, и неудобно. Из этой статьи вы узнаете, как с помощью пакета ЛКИ-Creator делать частицы; только не забудьте переустановить пакет. Инструкции по его переустановке вы найдете на нашем диске — в предыдущих статьях рубрики.

Метод Emit

Для излучения частиц в класс TLKI3dGameWorld добавлен метод:

Procedure Emit(N : integer; ChangeDest : TProc; Shape : TLKI3dParticleShape; DirY, DirZ, p1, p2 : single; Pic : integer; x, y, z, spd : single; deathtime : single; pa, pe : integer);

17KB

Разберем значение его параметров.

N — количество излучаемых частиц.

ChangeDest — процедура, управляющая движением частиц после излучения. Для начала можно использовать простое движение — LightMutate.

Shape — форма излучения. Принимает те же значения, что в двумерном пакете: psCircle, psCone, psLine, psBurst. Значение их — то же самое, но с «поправкой на трехмерность»: Circle — не круг, а шар, Line — не полоса, а цилиндр, и так далее.

DirY, DirZ — направление (углы к осям Y и Z, как обычно).

P1, P2 — максимальное и минимальное расстояние до частиц (в момент выпускания) от точки излучения.

Pic — номер модели частицы. Как обычно, модель частицы надо сперва загрузить, объявив ее в списке моделей. Частица — это TLKIMesh, который задается, как и прочие объекты в ЛКИ-Creator 3D, в виде текстового -файла. Чаще всего тут вполне сгодится что-то вроде шарика (низкополигонального!) или даже тетраэдра, иногда стоит взять что-то похитрее. Но в любом случае частицы «берут числом», форма отдельно взятой частицы имеет меньше значения.

17KB

X, Y, Z — координаты излучателя.

Spd — скорость полета частицы.

DeathTime — время жизни частицы (по прошествии которого она уничтожается). В миллисекундах.

PA, PE — дополнительные параметры для процедуры движения.

На примере с дельфином, который лежит на нашем диске (см. рисунок) вы можете увидеть работу этой процедуры (а также двумерных компонентов, описанных в предыдущей статье).


C непривычки подгонять параметры частиц в своей программе бывает очень и очень непросто. Чтобы «пощупать», как и на что они влияют, мы выкладываем на наш диск программу Emitter, которая позволяет оценить, на что похож поток частиц при разных значениях всех параметров, включая форму и текстуру частицы.

Спрайты

Как оказалось, статических двумерных компонентов все же недостаточно: многим нужны динамические спрайты, подобные тем, что работают в двумерной версии пакета.

В новом варианте пакета для этого появилcя класс TLKI3dSprite. Устроен он абсолютно так же, как и в двумерном пакете; координаты для него соответствуют экранным (а не трехмерным), он отображается всегда поверх трехмерного экрана.

Вам, скорее всего, понадобятся два метода этого класса.

Создание спрайта:

constructor Create(FName : TFilename; Form : TLKI3dForm; NPhases : integer = 1; Rotable : boolean = false; QuantumAngle : integer = 10);

Первый параметр — имя файла с картинкой, второй — имя формы, в которой вы работаете. Остальные параметры необязательны; NPhases нужно задать, если у вас в спрайте несколько фаз, а если предполагается его вращать — то нужно поставить в true параметр Rotable и указать в следующем параметре минимальный угол поворота (в градусах).

Рисование:

procedure Draw(x, y : integer; phase : integer = 1; angle : integer = 0);

Параметры — координаты (экранные), номер фазы, угол поворота.


* * *

На самом деле этим не исчерпываются изменения, сделанные нами в пакете. Многое подверглось правке или оптимизации; а в ближайшее время вас ожидает описание процедур проверки столкновения объектов и выбора объекта на экране при помощи мыши.

Чистого вам кода!

16KB


Назад