Обнаружение столкновений в Android

Итак, как лучше всего обнаруживать столкновения в Android? Единственные примеры, которые я могу найти по всему этому, включают обнаружение, когда два объекта находятся прямо друг над другом. Лично я думал об использовании ограничивающих рамок, но даже этого я не знаю, как это сделать, и тогда мне все еще нужно что-то более точное (на пиксель?).


person Foxx    schedule 04.12.2010    source источник
comment
Box2d - это библиотека .. она облегчит вашу жизнь   -  person AndroidGeek    schedule 26.05.2014


Ответы (3)


edthethird почти прав.

Вы хотите использовать myRectHitbox.intersect(myOtherRectHitbox) вместо . contains(...). .contains(...) срабатывает только в том случае, если один Rect полностью находится внутри другого, но .intersect(...) срабатывает, если есть какой-либо пиксель, перекрывающий другой.

И если вы используете RectF вместо Rect, вы получите субпиксельную точность на устройствах, которые поддерживают субпиксели.

person David Shellabarger    schedule 20.08.2012

Если вы не являетесь экспертом в этом вопросе, я рекомендую вам использовать для этого библиотеку Box2d. Это очень полный физический движок с очень хорошей поддержкой обнаружения столкновений.

Полезная ссылка: http://www.4feets.com/2009/03/2d-physics-on-android-using-box2d/

person Jesus Oliva    schedule 04.12.2010
comment
Мммм, я слышал об этой библиотеке раньше, но мне было интересно, можете ли вы использовать ее только для расчета столкновений, поскольку мне не нужна физика в ней - person Foxx; 04.12.2010

Два шага:

  1. Дайте всему, что может столкнуться с "хитбоксом". Держите Rect в ваших объектах того же размера, что и чертеж, и в том же месте.

  2. Позвоните одному из трех myRectHitbox.contains(...). Таким образом можно проверить столкновения на точках или на перекрестках.

person edthethird    schedule 02.06.2012