Я знаю, что это будет несколько расплывчато. Я пишу игру с приключенческим приключением, и у меня есть случайная (как, казалось бы, спонтанная) проблема, когда тело, которое я использую для персонажа, ни на что не попадалось. Я на самом деле не управляю столкновениями, я просто использую встроенные в тело тела, вызывающие функцию столкновения. Средство отладки показывает, что есть столкновение, когда не должно быть одного, и я не могу понять, почему это произойдет. Я полагаю, что мне нужен кто-то более знакомый с LibGDX, чем я предполагаю, почему это произойдет. Ошибка столкновения LibGDX Box2d
ответ
Я думаю, @CoderMusgrove прав.
Если у вас есть ровный пол, созданный из многих ящиков, вы можете застрять на краю их.
Это потому, что в физическом моделировании тело будет толкаться под действием силы тяжести. Это приводит к столкновению, которое обычно подталкивает тело назад.
Но если вы попали между двумя ящиками, распознаватель столкновения иногда решает оттолкнуть вас назад, поскольку это более короткий выход из столкновения.
Вы можете узнать больше об этом here.
Также решения обсуждаются в ссылке. Существует несколько разных способов:
- Резка краев: если вы разрезаете края вашего персонажа, распознаватель столкновения, скорее всего, решит подтолкнуть вашего персонажа. Я попробовал это решение, но в моем случае это немного замедлило характер. Также, когда я много режу края, персонаж начал прыгать каждый раз, когда он переходил на другую коробку.
- Использование ребер: вместо использования ящиков можно использовать только края. Похоже, вы часто не застряли на краях, чтобы решить эту проблему.
- Используйте gost vertices: Используя Вершины Призраков, вы можете дать определителю подсказку о том, как разрешить расследование. Эти призрачные вершины используются только для ответа на столкновение, поэтому они не будут влиять на остальную симуляцию.
- Сочетание ящиков: лучшим решением было бы создать, по возможности, один большой ящик из всех смежных ящиков. Это решит проблему, так как больше нет ребер, где тело может застрять.
- 1. Оптимизация столкновения libgdx и Box2d
- 2. libGDX Box2D: Как уничтожить тело после столкновения?
- 3. Ошибка Libgdx box2D
- 4. Box2D & LibGDX: ошибка BodyEditorLoader
- 5. Обнаружение столкновения LibGDX 3D
- 6. Box2D проверьте наличие ПОТЕНЦИАЛЬНОГО столкновения
- 7. LibGDX Box2D RayCast фатальная ошибка
- 8. Java LibGDX Box2D ошибка освещения
- 9. libgdx box2d raycast ближайший светильник
- 10. Box2D СПЕЦИАЛЬНОГО Столкновения Сценарий
- 11. box2d обнаружение столкновения, код
- 12. box2d столкновения групп
- 13. Box2d столкновения не хватает
- 14. Расчет столкновения Box2D
- 15. Box2D libgdx многоугольник
- 16. LibGDX/Box2D UnsatisfiedLinkError
- 17. Ошибка приложения приложения LibGDX Box2D при запуске
- 18. Libgdx Box2d разрешение экрана
- 19. Работает ли LIBGDX Box2d?
- 20. Рендеринг сустава? [libGDX/Box2D]
- 21. Box2D LibGDX вопрос Rope
- 22. Box2D Libgdx черный экран
- 23. Игрок LibGDX Box2D спотыкается
- 24. Рендеринг box2d в libgdx
- 25. LibGDX Box2d getWorldPoint issue
- 26. LibGDX + Box2D: Позиционирование объектов
- 27. LibGDX Box2D не отображается
- 28. Libgdx Box2D создает тела
- 29. LibGDX Touch Box2D Body
- 30. Libgdx light without box2d
Я прочитал о столкновении box2d и некоторых проблемах с ним, и это включало, что столкновения с краем не очень хорошо. Говоря о том, что проблема с работой с плитами будет проблемой, потому что вы будете постоянно сталкиваться с ребрами. Иногда вы застряли, а иногда и не будете. В учебнике, которое я прочитал, говорится, что он в основном сглаживает край (вам нужно будет обидеть, используя 'Shape.set (...)', чтобы получить его правильно, или вы можете использовать «CircleShape» с вашим «PolygonShape». – CoderMusgrove
Спасибо за информацию. Я кое-что копал и не мог найти эту информацию. Я буду проецировать спрайт над телом, так что я попробую сделать стены круглыми и посмотреть, как это происходит. – rvogel