Libgx поворот области текстуры



Интересно знать, как повернуть textureRegion в Libgdx.



Если есть isue с Pixmap, вы также можете дать его мне.



Я не хочу использовать спрайты, потому что это не подходит для того, что я хочу сделать.



Спасибо.

571   2  

2 ответов:

На самом деле довольно просто повернуть текстурную область с кратными 90°.

Текстурный регион - это часть более крупной текстуры, определяемая двумя парами УФ-координат. Чтобы повернуть свой текстурный регион, вам просто нужно повернуть эти УФ-координаты.

Например, вот вам оригинальный текстуррегион: Оригинальный регион

(мы предполагаем, что ваша область является квадратом, но она будет работать и с прямоугольником) Чтобы повернуть 90 по часовой стрелке, вам нужно просто поменять местами координаты:

u1 = u1
v1 = v2
u2 = u2
v2 = v1

Что приведет к:

Поворачивается области

Вы можете обобщить это решение с помощью матрицы преобразований (поворот, перевод, масштабирование), но для многократного поворота на 90° вам просто нужно поменять координаты.

EDIT: Эта страница содержит все, что вам нужно знать, чтобы изменить УФ-координаты текстурного региона

Для поворота под углом скажем тета (символ @) в начале координат

Пусть (x, y) - старые значения и

(xn, yn) - новые значения, то

По часовой стрелке

Xn=x * cos (@)+ y * sin (@)

Yn=y * sin (@)-x * cos (@)

Против часовой стрелки

Xn=x * cos (@)+ y * sin (@)

Yn=y * sin (@)-x * cos (@)

Для вдоль точки обратитесь к этой диаграмме помогает Как повернуть вершину вокруг определенной точки?

Например прямоугольник просто вычислить 2 положение вершин(x1,y1) и (x2, y2)

Затем нарисуйте следующим образом ширина=x2-x1; высота=y2-y1;

G. drawRectangle (x, y, width, heigh);

Прошло некоторое время с тех пор, как я пересмотрел свои заметки C. G., Но я думаю, что выше будет делать трюк

Если использовать libgdx здесь простое решение: Spritebatch.ничья(регион, 0, 0, 128, 128, 256, 256, 1, 1, 90); последний параметр-угол поворота

Comments

    Ничего не найдено.