|
|
Сейчас мы объясним, как использовать
математические столкновения для проверки столкновения снаряда и цели.
Математическое столкновение вычисляется быстрее обычного столкновения, так как
последнее должно проверить большее число объектов в программе. Применив простую
функцию математического столкновения, мы можем узнать, насколько близко снаряд
находится от цели. Если расстояние между ними достаточно мало, мы можем с
достаточной уверенностью сказать о том, что они столкнулись. If
BulletLife > 0 if
BulletLife = 0 Следующие строки добавлены в ту часть кода, в которой проверяется время "жизни" снаряда. if
Sqrt((mX# - bX#)^2 + (mY#+25 - bY#)^2 + (mZ# - bZ#)^2)
<20 Это сравнение использует математическую функцию "Sqrt" для расчета расстояния между двумя объектами. Если расстояние меньше 20, то на экран выводится сообщение о том, что игрок поразил цель, и объект-снаряд прекращает свое существование путем установки времени "жизни" снаряда равным 0. Функция математического столкновения вычитает из значения координаты X цели, которое хранится в переменной mX#, значение координаты X снаряда. Затем это число умножается само на себя при помощи экспоненциальной операции " ^ ". Аналогичные вычисления осуществляются в отношении координат Y и Z. Заметьте, что мы добавили 25 к координате Y цели, так как это будет примерно соответствовать координате середины стоящей цели. Полученные значения складываются, и вычисляется квадратный корень полученной суммы. Окончательное значение можно рассматривать как расстояние между двумя объектами. Советуем запомнить эту строку кода на случай, если вам когда-либо потребуется определять расстояние между двумя точками в 3D-сцене. Если вы не знакомы с квадратными
корнями и экспонентами, вам придется обратиться к справочнику по математике,
чтобы в деталях уяснить, как вычисляется расстояние. Знание того, чем являются
переменные и значение, рассчитываемое по формуле, должно помочь вам в дальнейшем
использовать эту часть кода в ваших собственных программах. |