渲染边框中的字符

我使用下面的代码呈现一个攻击animation:

currentFrame = attackAnimation[3].getKeyFrame(stateTime, false); //3 : left, 2: right batch.draw(currentFrame, getX(), getY()); 

这呈现在字符的x和y位置上的CurrentFrame。 这适用于正确的animation,你可以在这里看到:

在这里输入图像说明

但是当我将相同的代码应用于左侧时,例如,它不会在正确的位置上绘制角色,并且会从左下角“离开”并离开边界框。

我做错了什么,或者我没有看到什么?

在这里输入图像说明

 setGameObject(new Sprite(txtIdle[2])); setSize(getWidth(), getHeight()); setOrigin(getWidth() /2.0f, getHeight() /2.0f); setPosition(500, 500); 

这个代码设置一个空闲的图像和边界框的大小(和精灵)

它在给定坐标(x,y)处绘制纹理的左下角。 在第一种情况下,它的工作原理是因为Link的身体在最左边有一个边缘,所以他出现在盒子里面。 然而,在第二种情况下,纹理的最左侧是剑的末端,所以它把这个部分放在盒子里并从那里“抽出”。

解决这个问题的一个可能的方法是将剑分开给Link的身体。 边界框的大小足以容纳Link,所以(box corner.x + box width, box corner.y)向右和在(box corner.x - sword width, box corner.y) (box corner.x + box width, box corner.y)时,您可以在边界框的外面(box corner.x + box width, box corner.y)位于(box corner.x + box width, box corner.y) (box corner.x - sword width, box corner.y)当面对左侧。

您可以尝试设置边界框大小,具体取决于精灵大小。 如果由于某种原因你的精灵(animation帧)有不同的大小,那么使用最大的大小。