Я борюсь с внедрением системы обнаружения столкновений через tiledmap. У меня есть 2d «игра покемонов», в которой выведена черепичная карта. В частности, у меня есть слой «столкновения» в моем файле .tmx с файлом в виде плитки, который я хочу взаимодействовать с игроком и другими объектами. Мой вопрос заключается в том, как связать sprite (расширение класса Sprite) с слоем «столкновения» с черепицей и вызвать столкновение между ними. Любые советы приветствуются.Обнаружение столкновения Libgdx с TiledMap
6
A
ответ
12
Прежде всего, ваш Player
должен, вероятно, не extend Sprite
, потому что ваш игрок обычно намного больше, чем Sprite
. Вероятно, он состоит из нескольких спрайтов или даже Animations
. Храните спрайт в качестве свойства игрока.
Вопрос сам уже был рассмотрен несколько раз. Обычно необходимы следующие шаги:
- Найти слой коллизий в вашей карте
- Extract все объекты этого слоя
- Проверьте каждый из этих объектов для столкновения
В коде это может немного походите на это:
int objectLayerId = 5;
TiledMapTileLayer collisionObjectLayer = (TiledMapTileLayer)map.getLayers().get(objectLayerId);
MapObjects objects = collisionObjectLayer.getObjects();
// there are several other types, Rectangle is probably the most common one
for (RectangleMapObject rectangleObject : objects.getByType(RectangleMapObject.class)) {
Rectangle rectangle = rectangleObject.getRectangle();
if (Intersector.overlaps(rectangle, player.getRectangle()) {
// collision happened
}
}
Еще некоторые ссылки, которые могут быть заинтересованы:
Смежные вопросы
- 1. обнаружение столкновения, в libgdx
- 2. Обнаружение столкновения LibGDX 3D
- 3. LibGDX GraphicBug TiledMap OrthographicCamera
- 4. LibGDX - обнаружение столкновения прямоугольника в 2d?
- 5. libGDX- Точное обнаружение столкновения - создание многоугольника?
- 6. Libgdx TiledMap отображает частичные плитки
- 7. libgdx TiledMap Rendering Performance Issue
- 8. Ошибка Libgdx TiledMap в рендере
- 9. LibGDX TiledMap - не обнаруживать столкновений
- 10. Как манипулировать TiledMap в libGDX?
- 11. Libgdx Позиция камеры в TiledMap
- 12. Обнаружение столкновения btCompoundShape с btSphereShape с пулей и LibGDX
- 13. libgdx tiledmap мерцание с ближайшей фильтрацией
- 14. LibGdx - SideScroller с TiledMap и двумя актерами
- 15. Камера LibGDX следующего игрока с TiledMap?
- 16. Render Image actor поверх TiledMap в Libgdx
- 17. Обнаружение стороны столкновения с круглым прямоугольником в libgdx
- 18. Fix обнаружение столкновения обнаружение
- 19. обнаружение столкновения с мячом
- 20. обнаружение столкновения с прорывом
- 21. Обнаружение столкновений в libgdx
- 22. LWJGL + LibGDX + TiledMap 2D Platformer Graphics (начало)
- 23. LibGDX - TILEDmap - почему смещение слоя не отображается?
- 24. Могу ли я сохранить TiledMap в libGDX?
- 25. Libgdx Атака столкновения ближнего боя
- 26. Ограничение столкновения LibGDX Rectangle
- 27. Ошибка столкновения LibGDX Box2d
- 28. Обнаружение столкновения между строкой ShapeRenderer и спрайтом в LibGdx
- 29. Как получить положение ячейки tiledmap в libgdx
- 30. Libgdx Создание быстрых карт без TiledMap
Я реализовал свой код, но объекты возвращает число 0 и цикл никогда не выполняются. Любая идея о том, от чего это может быть? У меня нет объектов в моем слое, у меня есть слой, который действует как фон, который не требует столкновения, и слой, который действует как плитки, на которые игрок может столкнуться. – bhafenri
Когда вы написали «У меня есть слой« столкновения », я предположил, что для этого был использован слой объектов в TilEd. Вы, вероятно, должны сделать это именно так, потому что вполне удобно моделировать ваши столкновения, а также легко использовать его в коде. При вашем подходе вам придется выполнять итерацию через ваши плитки вместо объектов и создавать прямоугольник самостоятельно для всех плиток в уровне столкновения. Я по-прежнему рекомендую вам использовать слой объекта. – noone
Сделаем, спасибо за помощь! Наконец понял это. – bhafenri