2015-07-14 4 views
0

Я знаю, что это будет несколько расплывчато. Я пишу игру с приключенческим приключением, и у меня есть случайная (как, казалось бы, спонтанная) проблема, когда тело, которое я использую для персонажа, ни на что не попадалось. Я на самом деле не управляю столкновениями, я просто использую встроенные в тело тела, вызывающие функцию столкновения. Средство отладки показывает, что есть столкновение, когда не должно быть одного, и я не могу понять, почему это произойдет. Я полагаю, что мне нужен кто-то более знакомый с LibGDX, чем я предполагаю, почему это произойдет. Player is stuck on the leftОшибка столкновения LibGDX Box2d

+1

Я прочитал о столкновении box2d и некоторых проблемах с ним, и это включало, что столкновения с краем не очень хорошо. Говоря о том, что проблема с работой с плитами будет проблемой, потому что вы будете постоянно сталкиваться с ребрами. Иногда вы застряли, а иногда и не будете. В учебнике, которое я прочитал, говорится, что он в основном сглаживает край (вам нужно будет обидеть, используя 'Shape.set (...)', чтобы получить его правильно, или вы можете использовать «CircleShape» с вашим «PolygonShape». – CoderMusgrove

+0

Спасибо за информацию. Я кое-что копал и не мог найти эту информацию. Я буду проецировать спрайт над телом, так что я попробую сделать стены круглыми и посмотреть, как это происходит. – rvogel

ответ

1

Я думаю, @CoderMusgrove прав.
Если у вас есть ровный пол, созданный из многих ящиков, вы можете застрять на краю их.
Это потому, что в физическом моделировании тело будет толкаться под действием силы тяжести. Это приводит к столкновению, которое обычно подталкивает тело назад.
Но если вы попали между двумя ящиками, распознаватель столкновения иногда решает оттолкнуть вас назад, поскольку это более короткий выход из столкновения.
Вы можете узнать больше об этом here.
Также решения обсуждаются в ссылке. Существует несколько разных способов:
- Резка краев: если вы разрезаете края вашего персонажа, распознаватель столкновения, скорее всего, решит подтолкнуть вашего персонажа. Я попробовал это решение, но в моем случае это немного замедлило характер. Также, когда я много режу края, персонаж начал прыгать каждый раз, когда он переходил на другую коробку.
- Использование ребер: вместо использования ящиков можно использовать только края. Похоже, вы часто не застряли на краях, чтобы решить эту проблему.
- Используйте gost vertices: Используя Вершины Призраков, вы можете дать определителю подсказку о том, как разрешить расследование. Эти призрачные вершины используются только для ответа на столкновение, поэтому они не будут влиять на остальную симуляцию.
- Сочетание ящиков: лучшим решением было бы создать, по возможности, один большой ящик из всех смежных ящиков. Это решит проблему, так как больше нет ребер, где тело может застрять.

Смежные вопросы