1

我试图弄清楚所有这些参数的作用,因为当我绘制我的子弹图像时,它显示为一个实心块而不是一个在纯色和空白部分之间交替的精灵(即,而不是 10101,它是 11111,其中 0 是纹理中的空白部分)。

之前,我正在使用batch.draw(texture, float x, float y)它并正确显示纹理。但是我在玩旋转,这是最合适的 draw 版本:

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

我可以找出明显的那些originXoriginY(我相信从左上角像素绘制图像的位置)但是我不知道纹理后的x坐标y是什么。

scaleX, scaleY, rotation, and flipXflipY我知道该怎么做,但是什么是srcXand srcY,以及srcWidthand srcHeight

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

操纵图像中心点的常见用途是什么?

4

2 回答 2

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)。

请记住,原点并不能确定图像绘制位置(这是最常见的错误)。这意味着两个 next 方法调用是在同一位置绘制图像(第四和第五个参数是 originX 和 originY):

batch.draw(image, x, y, 0, 0, width, height, ...);
batch.draw(image, x, y, 50, 50, width, height, ...);
于 2014-08-13T19:06:33.290 回答
1

根据文档,参数定义如下:

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
于 2014-08-13T16:57:40.183 回答