как рисовать пользовательские фигуры с помощью простой текстуры в libgdx?

Я хочу рисовать собственные статические фигуры в своей игре, как это делают злые птицы: angry birds

но проблема в том, что текстура имеет квадратную форму.

статическая земля

как мы можем указать «SpriteBatch» рисовать фигуры с некоторыми вершинами? у кого-нибудь есть идеи?


person Aliaaa    schedule 11.05.2012    source источник


Ответы (1)


Согласно документам:

SpriteBatch используется для рисования 2D-прямоугольников, которые ссылаются на текстуру (область).

Таким образом, этот метод не позволяет вам указывать никакую другую геометрию, кроме прямоугольника. Однако существует метод рисования, который позволяет указать четыре координаты "прямоугольника" и превратить его во что-то другое. Вам придется разбить геометрию на более мелкие части, соответствующие этим примитивам. Похоже, этот метод не поддается изменению геометрии.

Лучше создать сетку и просто нарисовать ее. Сетка не поддерживает триангуляцию, поэтому используйте ObjLoader.loadObj* для загрузки сетки в Alias ​​Wavefront OBJ формат. Указание геометрии не должно быть проблемой; статья ссылается на некоторые примеры файлов.

person Stefan Hanke    schedule 11.05.2012
comment
Спасибо за ваши хорошие советы. Но есть проблема: я использую камеру и настроил свой spriteBatch на использование метрического окна просмотра. И сетка не поддерживает проекцию матрицы. поэтому, если я использую mesh.render(..) для рисования, он не будет поддерживать камеру (движется вместе с камерой), и ее размер не будет метрическим. Есть ли у вас какие-либо идеи об этой проблеме? - person Aliaaa; 11.05.2012
comment
@Aliaaa Вы имеете в виду, что SpriteBatch содержит матрицу Projection и ModelView? Взгляните на следующий пример, вам нужно применить матрицы к твой собственный. - person Stefan Hanke; 11.05.2012