我有以下代码,其中紧密映射的精灵,矩形和多边形在libgdx中以相同角度旋转。旋转后,矩形未与精灵对齐。尽管精灵在绘制时会旋转,但旋转后的坐标和尺寸保持不变。矩形不是这种情况。请参见下面的代码和结果图像。
public void rotate(int angle){
System.out.println("Before-recta x , y " + this.rectangle.getX() + " " + this.rectangle.getY() + " " + this.rectangle.getHeight() + " " + this.rectangle.getWidth());
System.out.println("Before-sprite x , y " + sprite.getX() + " " + sprite.getY()+ " " + this.sprite.getHeight() + " " + this.sprite.getWidth());
this.sprite.rotate(angle);
this.rectangle = null;
this.polygon.rotate(angle);
this.rectangle = this.polygon.getBoundingRectangle();
System.out.println("Afer-sprite x , y " + sprite.getX() + " " + sprite.getY() + " " + this.sprite.getHeight() + " " + this.sprite.getWidth());
System.out.println("Afer-recta x , y " + this.rectangle.getX() + " " + this.rectangle.getY() + " " + this.rectangle.getHeight() + " " + this.rectangle.getWidth());
}
如果查看矩形的值,则宽度约为370,高度约为345。该宽度大于高度。因此,当您旋转此对象时,您会期望它会高一些,而不会宽一些。我们将进行一些快速匹配,看看我们得到的是正确的:
我们将从高度上移除宽度,以获取两侧的额外空间
370-346 = 24
现在我们将其除以2,因为它平均分布在矩形的每一侧
24/2 = 12
现在,我们采用原始的x位置-额外值的1/2
268-12 = 256
而且对于y位置
739 + 12 = 751
这些与您为矩形的x和y位置获取的值匹配,因此我们知道这是正确的。
现在,如果我们对Sprite执行此操作,您将看到所获得的值不适用于旋转的Sprite。值前后的子画面相同。
造成这种情况的原因很可能是精灵的x,y,w和h永不改变,而是在渲染之前使用矩阵对图像进行了变换,从而使精灵在其整个生命周期中都具有原始值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句