Libgdx: Поворот текстуры при рисовании с помощью spritebatch

Я пытаюсь повернуть текстуры, когда я их рисую. Я полагал, что было бы разумнее сделать это, чем поворачивать изображения на 90 градусов в paint.net и сохранять их в разных файлах. Я посмотрел на документацию api для аргументов рисования spritebatch, но я просто не понимаю. Есть множество аргументов, таких как srcX, srcY, originX и т.д. Также я хотел бы знать, как сделать то же самое для областей текстуры. Вот ссылка на страницу документации api: http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/SpriteBatch.html

Спасибо!

Ответ 1

снова из документации, но скопирован здесь для удобства использования, и поэтому я могу объяснить немного лучше.

x - the x-coordinate in screen space
y - the y-coordinate in screen space

эти два значения представляют местоположение для рисования вашей текстуры в пространстве экрана (игровое пространство). Довольно объяснительно.

originX - the x-coordinate of the scaling and rotation origin relative to the screen space coordinates
originY - the y-coordinate of the scaling and rotation origin relative to the screen space coordinates

эти два значения представляют местоположение, в котором происходит поворот (и масштабирование) по отношению к пространству экрана. Так, например, если вы дадите здесь 0, 0, поворот и масштабирование произойдет вокруг одного из углов вашей текстуры (в нижней левой части я верю), тогда как если вы дадите центр (ширина/2, высота /2), поворот и масштабирование будут происходить вокруг центра вашей текстуры (это, вероятно, то, что вы хотите для любых "нормальных" вращений)

width - the width in pixels
height - the height in pixels

размеры для рисования текстуры на экране.

scaleX - the scale of the rectangle around originX/originY in x
scaleY - the scale of the rectangle around originX/originY in y

значения, представляющие масштаб вашего прямоугольника, где значения от 0 до 1 будут уменьшать прямоугольник, а значения больше 1 будут расширять прямоугольник. Обратите внимание, что это относится к источнику, который вы дали ранее, а это означает, что если это не центр, изображение может выглядеть искаженным.

rotation - the angle of counter clockwise rotation of the rectangle around originX/originY

угол поворота изображения. Опять же, это происходит вокруг источника, указанного ранее, поэтому поворот может не выглядеть "правильным", если начало координат не является центром изображения

srcX - the x-coordinate in texel space
srcY - the y-coordinate in texel space

эти два значения являются исходным местоположением фактической области файла изображения (.png,.jpg, whatever), который вы хотите использовать, в пикселях. В основном начало вашего изображения.

srcWidth - the source with in texels
srcHeight - the source height in texels

аналогично, эти два значения - это ширина и высота фактической области файла изображения, который вы используете, в пикселях.

flipX - whether to flip the sprite horizontally
flipY - whether to flip the sprite vertically

Наконец, эти два булина используются для перевертывания изображения по горизонтали или по вертикали.

Теперь вы можете заметить, что аналогичный метод для рисования TextureRegions не имеет srcX, srcY, srcWidth или srcHeight. Это потому, что это значения, которые вы передаете области текстуры при создании из текстуры.

По сути, это означает, что команда

//with TextureRegions
SpriteBatch.draw(textureRegion, x, y, originX, originY, width, height, scaleX, scaleY, rotation);

эквивалентно

//with Textures from TextureRegions
SpriteBatch.draw(textureRegion.getTexture(), x, y, originX, originY, width, height, scaleX, scaleY, rotation, textureRegion.getRegionX(), textureRegion.getRegionY(), textureRegion.getRegionWidth(), textureRegion.getRegionHeight(), false, false);