如何设置 BoundingRectangle Position

How to set BoundingRectangle Position

我尝试设置边界矩形位置。

spr.getBoundingRectangle().setPosition(100,100);
Sytem.out.println(spr.getBoundingRectangle.getX() + " " + spr.getBoundingRectangle.getX());
// and the output is always 0,0(position)

我也尝试在条件 == true 时设置它的位置

if(justTouched == true){
     spr.getBoundingRectangle().setPosition(100,100);
    Sytem.out.println(spr.getBoundingRectangle.getX() + " " + spr.getBoundingRectangle.getX());
}// but the result is the same

首先,我只想指出,在您的 System.out.println() 中,您打印出了两个 X 坐标。无论如何,X 和 Y 坐标位于精灵的左下角,所以如果你的精灵是 100 x 100 那么结果是正确的。我建议制作您自己的矩形方法,称为 getBounds() 或其他名称,并定义 x、y、高度和宽度,然后使其跟随您的 sprite。我通常在我的玩家角色中这样做并创建他自己的边界框。也许只有我一个人:/

边界 Rectangle 生成 and/or 在您调用 getBoundingRectangle() 时更新。这意味着您没有使用 Rectangle class 的 setX 或 setY 修改精灵顶点。而是使用 Sprite.setPosition(x,y); 以这种方式移动精灵会移动边界矩形。

还有以下方法可以改变精灵的边界矩形(不要将这个setX和setY与Rectangle classes setX和setY混淆,这个方法修改了精灵的顶点):

setX(x)
setY(y)
setBounds(x,y,width,height)
setSize(width,height)
translate(diffX,diffY)
translateX(diffX)
translateY(diffY)

以下似乎最符合您的问题的方式。

spr.setPosition(100,100);
Rectangle sprBounds = spr.getBoundingRectangle();
Sytem.out.println(sprBounds.getX() + " " + sprBounds.getY());