Значит так, вот листинг функций: InitTrigger() - это
инициализация системы, ее нужно ставить сразу после того как вы
заинклудили исходник, то есть после строки: Include "TrigMain.bb" AddTrigSphere(debug=False, x#, y#, z#, radius#=1)
Функция создает триггер, который реагиурет на расстояние, то есть если
предмет ближе чем радиус триггера, тогда он сработает. Параметры
функции: debug - нужно для визуальной отладки, если равна True, тогда на месте триггера создается сфера. x, y, z - координаты триггера radius - это радиус реагирования триггера AddTrigBox(debug=False, x#, y#, z#, w#=1, h#=1, d#=1, Tip=TRIG_BOX1, pitch#=0, yaw#=0, roll#=0) Функция создается триггер ввиде коробки( параллепипеда ). Бывает двух типов, но о них ниже. Параметры: debug - также как и в предыдущей функции нужна для отладки. Создается бокс на месте триггера нужного размера. x, y, z - указываем координаты триггера w, h, d - размеры, ширина, высота и глубина соответственно. Tip : - задаем тип бокса TRIG_BOX1 - это самая простая и самая быстрая проверка, проверка на координаты. TRIG_BOX2 - это прповерка учитывает ориентацию бокса, то есть он может быть повернут. Если Tip равен TRIG_BOX2, тогда учитываются следующие параметры: pitch, yaw, roll - углы поворота бокса CheckEntityInTrig( ent, t.TriggerInfo ) Основная функция. Она проверяет нахождение объекта в заданном триггере, если это так, тогда возвращает True иначе False. ent - объект, который нужно проверить на пересечение с триггером t.TriggerInfo - триггер, с которым осуществляется проверка.
Вся система крайне быстрая( проверка на расстояние сделана по быстрому
методу с уходом от квадратного корня ) и удобная в обращении. Чтобы
создать триггер нужно сделать следующее: Include "TrigMain.bb" ; подключаем систему InitTrigger() ; инициализируем триггер Global trig.triggerinfo ; создаем переменную под триггер x=6 : y=0 : z=0 radius = 2 trig = AddTrigSphere(True, x,y,z, radius) if CheckEntityInTrig( Entity, trig )=true then ;.... что делать если ентити внутри тригера endif
|