Люди начали писать игру для Android и наткнулись на Andengine (кто не знает, это самый популярный графический 2D-движок для Android) со следующей задачей: есть набор связанных между собой линий, которые представляют собой ландшафт (можете прочитать как его сгенерировать здесь - gameprogrammer.com/fractal.html ).
Это выглядело примерно так:
Но нам не нужен «мостик», нам нужна поверхность, да еще и с текстурой, в общем, чтобы она выглядела вот так…
Начали копаться в AndEngine, оказалось, что он умеет работать только с текстурами как со спрайтами, состоящими из двух треугольников.
Нас это никак не может устроить, поскольку мы заранее не знаем размеров ландшафта, и поэтому пропорции UV-координат 1:1 нам не подходят. И в принципе перед нами не спрайт, а поверхность, представляющая собой невыпуклый многогранник.
Поэтому нам придется писать свой велосипед, потому что.
Гугление не дало нормальных результатов по основной ветке andengine. Хорошо, что у него адекватные классовые интерфейсы и всё логично, надо только разобраться.
Нам нужен свой класс с буфером вершин для треугольников и соответствующими UV-координатами.
Скажу сразу, что не буду вдаваться в объяснения того, почему ряд функций не перегружается и почему некоторые вещи сделаны в определении.
местами, а движок - это целый замысловатый лес в архитектурном плане, и я просто оставил вещи в том положении, в котором они работали, ибо перебор всего движка занял бы 10 таких статей и пол года моей жизни.
Идти… Во-первых, договоримся, что у вас уже есть список, содержащий все линии, составляющие поверхность.
Тот самый «мост», показанный на первом скриншоте.
Начинаем описывать класс, который будет представлять нашу поверхность:
Для удобства создадим для каждой вершины объект, хранящий ее двумерные координаты в пространстве и UV. Теги: #Android #разработка игр #andengine #java #Разработка игр #Разработка Androidprivate abstract class GroundShape extends Shape {
-
Байконуру – 60 Лет.
19 Oct, 24 -
«Образование» Отстает
19 Oct, 24 -
Ipb 3.0 Вышел Вчера
19 Oct, 24 -
Обсуждение Вышло На Consolenewz В Записях
19 Oct, 24