Основы трехмерной графики в среде Blitz3D


Взаимодействие объектов (15 мин)


В большинстве случаев, когда программа оперирует массивом объектов, встает вопрос об их взаимодействии. Наиболее часто встречаемый вариант – столкновение объектов. Когда два или более материальных объекта пытаются занять одно и то же пространство, нужен способ изменить их траекторию (другие варианты – уничтожить один из них, остановить оба объекта и т. д.). Этот случай называется столкновением или коллизией. Blitz3D может автоматически реагировать на столкновения, используя один из нескольких стандартных методов.

Чтобы активизировать механизм реагирования на столкновения нужно вначале задать тип сталкиваемых объектов с помощью команды:

ENTITYTYPE объект, тип

 

Это нужно для того, чтобы затем определить, какие объекты с какими и как должны сталкиваться. Тип – это число. Задавая один и тот же тип для разных объектов, вы определяете их, как группу участников столкновений. Теперь нужно задать механизм столкновения командой:

COLLISIONS тип движущегося объекта, тип неподвижного объекта, метод определения столкновения, реакция

 

Данная команда определяет столкновение, если объект первого типа движется и пытается занять пространство второго, неподвижного. Если двигаются оба объекта, то сначала первый из них надвигается на второй, затем второй на первый.

Методы столкновения: 1 - сфера со сферой, 2 – сфера с многогранником, 3 – сфера с параллелепипедом. То есть, движущийся объект всегда виртуально представлен сферой, то есть вне зависимости от его формы он будет реагировать на столкновения, как сфера. Можно задавать радиус этой сферы:

ENTITYRADIUS объект, радиус сферы

 

Реакция на столкновение может быть двух типов: 1 – остановка объекта, 2 – скольжение объекта вдоль неподвижного.

И в заключение, необходимо дать команду UPDATEWORLD, чтобы проверить столкновения и соответственно отреагировать.

Для следующей программы понадобятся функции определения текущих координат объекта

ENTITYX(объект) – координата X

ENTITYY(объект) – координата Y

ENTITYZ(объект) – координата Z




Начало  Назад  Вперед