Коллизии в BlitzMax Часть 3.
Вот нужные картинки:
Изучаем 2Д программирование: Max 2DКоллизии Часть 3 Автор: Assari 2006 Перевел: JohnK 2007 СодержаниеВступление В предыдущей части мы узнали, как проверять коллизии с помощью функции CollideImage. При использовании CollideImageпроверка пиксель - совершенная. Это можно проверить путем медленного движения игрока на корабль. Но, к сожалению, пиксель-совершенные коллизии тратят много ресурсов компьютера, что, естественно, приведет к падению FPS. BlitzMaxпредоставляет еще одну функцию, похожую на CollideImage- CollideRect. Давайте рассмотрим принцип ее работы. CollideRect Синтаксис CollideRectсхож с синтаксисом функции CollideImage Код:
Function CollideRect:Object[](x,y,w,h,collidemask%,writemask%,id:Object=Null) Давайте перепишем код, с использованием функции CollideRect. Код:
Strict Обратите внимание, что коллизия происходит тогда, когда прямоугольник соприкасается с кораблем. Попробуйте запустить эту программу, без использования выражения drawrect, и вы увидите, что коллизия ведет себя, так же как и раньше, при использовании функции CollideRect. Самое классное в функции CollideRect– это то, что она возвращает массив объектов, которые ”накрыл” прямоугольник. Используя этот массив, вы можете провести пиксель - совершенную проверку на коллизию, между объектами в этом массиве. Вот демонстрация этого: Код:
Local p:Object[]=CollideRect(MouseX()-w,MouseY()-h,100,100,1,0) Обратите внимание, что локальное начало координат рисуемого изображения является очень важным аспектом, при проверке на коллизии. Не забывайте, что функции CollideImage/CollideRectи DrawImageиспользуют xи yкоординаты изображения, а так же midhandle-фактор, то есть, для точного определения коллизий вы должны использовать одинаковые данные. Выбор щелчком мыши, с помощью CollideRect Вот не большой пример, как можно использовать CollideRectдля определения выбора. Не забывайте 'записывать' в слой коллизии, изображения, которые будут выбраны. Код:
If CollideRect(MouseX(),MouseY(),2,2,1,0) And MouseDown(1) Вот версия для искушенных: возвращенный объект вы можете использовать для дальнейших действий. Код:
Local p:Object[]=CollideRect(MouseX(),MouseY(),2,2,1,0) And MouseDown(1) Третья часть этого туториала, продемонстрировала вам, как можно провести проверку на коллизии, быстрым и простым путем: используя функцию CollideRect. Вы вольны экспериментировать, и именно вы должны определить, где использование этой функции, для вас оптимально. А если вам непонятно, как использовать ее, воспользуйтесь функцией CollideImage. Вот и всё. Надеюсь, вы поняли, как делать проверку на коллизии в BlitzMax. |
Часовой пояс GMT +4, время: 13:18. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot