Быстро движущиеся тела иногда пропускают столкновение в Box2d, Andengine
Вопрос
У меня быстро движущееся тело (а), которое динамично. Предполагается, что он столкнется с другим телом (B). Сталкивается с B, но иногда он проходит тело B без столкновения. Это совершенно случайное поведение. У меня должно быть это столкновение. Пожалуйста, справляйте, почему это так, как это, случайно.
Решение
Эффект одного объекта, проходящего через другой из -за большого движения в одном временном шаге, называется туннелирование.
Box2d использует непрерывное обнаружение столкновений между динамическим и статический Объекты для решения этой проблемы. Тем не менее, ваш случай (Dynamic VS Dynamic) не обрабатывается автоматически, так что это просто случайный бросок кубиков, оказались ли ваши объекты в сталкивающихся позициях в тот момент, когда столкновения оцениваются.
От Box2d Manual:
Обычно ПЗС не используется между динамическими телами. Это сделано, чтобы сохранить производительность разумной. В некоторых игровых сценариях вам нужны динамические тела, чтобы использовать CCD. Например, вы можете захотеть снять высокую скоростную пулю в стопке динамических кирпичей. Без ПЗС пуля может туннель через кирпичи.
Быстро движущиеся объекты в Box2D могут быть помечены как пули. Пули будут выполнять ПЗС как со статическими, так и динамическими телами. Вы должны решить, какие тела должны быть пулями на основе вашего игрового дизайна. Если вы решите, что тело следует рассматривать как пулю, используйте следующую настройку.
bodydef.bullet = true;
Флаг пули влияет только на динамические тела.
Box2D выполняет непрерывное столкновение последовательно, поэтому пули могут пропустить быстрые движущиеся тела.