Обнаружение столкновений во вспышке box2d было одной из самых сложных вещей для меня, когда я только начинал.Информация обо всех столкновениях предоставляется классом слушателей контактов.Чтобы реагировать на определенные коллизии (например, коллизию между myChar и вашими наземными объектами), вам необходимо переопределить функции в классе слушателя базового контакта и убедиться, что контакт является тем, который вас интересует. В частности, переопределите BeginContact иEndContact работает и проверяет, что контакт находится между корпусом игрока и заземлением.Эти функции запускаются, когда два тела сначала соприкасаются и прекращают контакт соответственно, и класс b2Contact, который они принимают в качестве параметра, содержит информацию о столкновении двух приборов.
Итак, в вашей переопределенной функции BeginContact вы должны проверитьпосмотрите, является ли одно тело заземленным, а другое - игроком, а затем установите для вашей заземленной переменной значение true.В вашей переопределенной функции EndContact вы снова проверите, чтобы убедиться, что контакт ссылается на правильные тела, а затем установите для вашей заземленной переменной значение false.Наконец, когда игрок нажимает клавишу прыжка, проверьте заземленную переменную и, если установлено значение true, разрешите игроку прыгать.
Некоторые коды полу-псевдо:
override BeginContact(contact:b2Contact):void {
check to see whether GetFixtureA().GetBody() or GetFixtureB().GetBody() is ground and the other is player
grounded = true;
}
override EndContact(contact:b2Contact):void {
again, check both bodies
grounded = false;
}
В зависимости от того, как выИзложив свои наземные тела, возможно, лучше было бы вести подсчет количества наземных тел, с которыми в данный момент контактирует игрок, и, если это число больше 0, разрешите игроку прыгать.
Уроки Todd's Box2D были для меня самым полезным ресурсом.Хотя они относятся к box2d 2.02, а не к последним 2.10, приемник контактов аналогичен.Комментарии к коду в исходных файлах box2d также содержат полезные рекомендации по реализации.
Надеюсь, это поможет вам начать.Дайте мне знать, если что-нибудь может быть яснее.