Сейчас мы объясним, как использовать математические столкновения для проверки столкновения снаряда и цели. Математическое столкновение вычисляется быстрее обычного столкновения, так как последнее должно проверить большее число объектов в программе. Применив простую функцию математического столкновения, мы можем узнать, насколько близко снаряд находится от цели. Если расстояние между ними достаточно мало, мы можем с достаточной уверенностью сказать о том, что они столкнулись.
If
BulletLife > 0
Dec BulletLife
Move object 2,20
bX#=Object position X(2)
bY#=Object position Y(2)
bZ#=Object position Z(2)
Position sound 2,bX#,bY#,bZ#
set cursor 10,10
if Sqrt((mX# - bX#)^2 + (mY#+25 - bY#)^2 + (mZ# - bZ#)^2) <20
text 240,220 ,"Цель поражена"
BulletLife = 0
endif
if BulletLife = 0
Hide object 2
stop sound 2
endif
Endif
Следующие строки добавлены в ту часть кода, в которой проверяется время "жизни" снаряда.
if Sqrt((mX# - bX#)^2 + (mY#+25 - bY#)^2 + (mZ# - bZ#)^2) <20
text 240,220 ,"Цель поражена"
BulletLife = 0
endif
Это сравнение использует математическую функцию "Sqrt" для расчета расстояния между двумя объектами. Если расстояние меньше 20, то на экран выводится сообщение о том, что игрок поразил цель, и объект-снаряд прекращает свое существование путем установки времени "жизни" снаряда равным 0. Функция математического столкновения вычитает из значения координаты X цели, которое хранится в переменной mX#, значение координаты X снаряда. Затем это число умножается само на себя при помощи экспоненциальной операции " ^ ". Аналогичные вычисления осуществляются в отношении координат Y и Z. Заметьте, что мы добавили 25 к координате Y цели, так как это будет примерно соответствовать координате середины стоящей цели. Полученные значения складываются, и вычисляется квадратный корень полученной суммы. Окончательное значение можно рассматривать как расстояние между двумя объектами. Советуем запомнить эту строку кода на случай, если вам когда-либо потребуется определять расстояние между двумя точками в 3D-сцене.
Если вы не знакомы с квадратными корнями и экспонентами, вам придется обратиться к справочнику по математике, чтобы в деталях уяснить, как вычисляется расстояние. Знание того, чем являются переменные и значение, рассчитываемое по формуле, должно помочь вам в дальнейшем использовать эту часть кода в ваших собственных программах.