Как создать многоугольник на текстуре libGDX
Я хочу создать многоугольник, вырезав прозрачную область из текстуры. Я написал программу, которая обнаруживает столкновение между 2 объектами. Но столкновение обнаруживается до того, как они столкнутся. Вот как это выглядит: https://imgur.com/a/dFmXI
Это код: https://hastebin.com/bebusadiku.java Я думал вырезать текстуру и создать многоугольник на основе вырезанной текстуры, а затем обнаружить столкновение, используя метод Intersector, но я понятия не имею, как указать вершины многоугольника.
Я пытался следовать этому, но нет никакого объяснения, как обнаружить вершины: https://gamedev.stackexchange.com/questions/114228/how-to-detect-collision-only-in-non-transparent-texture
Спасибо за помощь
1 ответ
Я использовал этот редактор полигональных форм, чтобы создавать более сложные формы для проверки столкновений. Я считаю, что с Box2D это работает "из коробки", но Box2D занимает много места, и это не нужно, если вы не используете реальную физику. Тем не менее, этот инструмент генерирует JSON
отформатировал полигональные координаты, и это не так уж и сложно десериализовать обратно в объекты Polygon и столкнуться с реализацией Intersector. Итак, по шагам вы:
- Создайте форму для ваших изображений, используя инструмент редактора форм.
- Экспортируйте это в JSON с помощью инструмента.
- Десериализовать эти данные в LibGDX
Polygon
- Перемещайте, масштабируйте и правильно прикрепляйте его к изображению, чтобы оно было синхронизировано.
- Сначала проверьте столкновение на основном прямоугольнике против прямоугольника.
- Если есть базовое столкновение, сделайте более детальное обнаружение столкновения с
Intersector
,
Инструмент экспортирует много избыточных данных, если вы ознакомитесь с форматом, который он экспортирует, вы можете избавиться от всех данных, кроме данных многоугольника / вершин.