Для чего используются эти аргументы в интерфейсе пакета libgdx?

Я пытаюсь выяснить, что делают все эти аргументы, например, когда я рисую свое изображение маркера, оно появляется в виде сплошного блока вместо спрайта, который чередуется между сплошным цветом и пустой частью (то есть вместо 10101 это 11111, где 0 пустые части в текстуре).

Раньше я использовал batch.draw(texture, float x, float y) и он отображает текстуру правильно. Однако я играл с вращением, и эта версия розыгрыша показалась наиболее подходящей:

batch.draw(texture, x, y, originX, originY, width, height, scaleX, scaleY, rotation, srcX, srcY, srcWidth, srcHeight, flipX, flipY)

Я могу выяснить очевидные, те, которые являются originX, originY (место для рисования изображения из его верхнего левого пикселя, я верю) однако тогда я не знаю, что x, y координата после текстуры для.

scaleX,scaleY, rotation, а также flipX, flipY Я знаю, что делать, но что srcX а также srcY, вместе с srcWidth а также srcHeight за?

редактировать: я поиграл и выяснил, что делают srcX,srcY и srcHeight,Width. Я не могу понять, что originX,Y делает, хотя я предполагаю, что это центральная точка изображения. Так как я не хочу играть с этим в любом случае, я должен оставить это как 0,0?

Что было бы распространено для манипулирования центральной точкой изображений?

2 ответа

Решение

Отвечая на главный вопрос.

srcX, srcY, srcWidth, srcHeight Эти значения определяют, какую часть (прямоугольник) исходной текстуры вы хотите нарисовать. Например, исходное изображение имеет размер 100x100 пикселей. И вы хотите нарисовать только 60x60 часть в середине исходного изображения.

batch.draw(texture, x, y, 20, 20, 60, 60);

Отвечая на ваш отредактированный вопрос.

Начало координат является центральной точкой для преобразования вращения и масштаба. Поэтому, если вы хотите, чтобы ваш спрайт масштабировался и вращался вокруг его центральной точки, вы должны установить исходные значения так:

float originX = width * 0.5f;
float originY = height * 0.5f;

В случае, если вас не волнует поворот и масштабирование, вы можете не указывать эти параметры (оставьте это значение 0).

И имейте в виду, что происхождение не определяет положение рисунка изображения (это самая распространенная ошибка). Это означает, что два следующих вызова метода рисуют изображение в одной и той же позиции (четвертый и пятый параметры - originX и originY):

batch.draw(image, x, y, 0, 0, width, height, ...);
batch.draw(image, x, y, 50, 50, width, height, ...);

Согласно документации, параметры определены так:

srcX - the x-coordinate in texel space
srcY - the y-coordinate in texel space
srcWidth - the source with in texels
srcHeight - the source height in texels
Другие вопросы по тегам