在libgdx的Batch接口中,这些参数用于什么?

时间:2014-08-13 16:37:43

标签: eclipse libgdx spritebatch

我正在试图找出所有这些参数的作用,因为当我绘制子弹图像时,它显示为实体块,而不是在纯色和空白部分之间交替的精灵(即代替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)

我可以找出明显的那些,那些是originXoriginY(从我的左上角像素中绘制图像的位置我相信)然而我不知道{{1 }},x纹理后的坐标。

yscaleXscaleYrotationflipX我知道该怎么做,但是什么是flipY和{ {1}}以及srcXsrcY表示?

编辑:我玩了一下,想出了srcX,srcY和srcHeight,Width的作用。我无法弄清楚originX,Y的作用,即使我猜它是图像的中心点。既然我不想玩这个,我应该把它留作0,0吗?

操纵图像中心点会有什么共同用途?

2 个答案:

答案 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, ...);

答案 1 :(得分:1)

根据documentation,参数如下定义:

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