如何设置BoundingRectangle位置

时间:2015-10-04 14:31:48

标签: java libgdx position bounding-box

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

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

2 个答案:

答案 0 :(得分:1)

当您致电Rectangle时,会生成和/或更新边界getBoundingRectangle()。这意味着您不能通过使用Rectangle类的setX或setY来修改精灵顶点。而是使用Sprite.setPosition(x,y);以这种方式移动精灵移动边界矩形。

还有以下方法可以改变精灵的边界矩形(不要将此setX和setY与Rectangle类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());

答案 1 :(得分:0)

首先,我只想指出在你的System.out.println()中打印出两个X坐标。无论如何,X和Y坐标位于精灵的左下角,所以如果你的精灵是100 x 100,那么结果是正确的。我建议你自己创建一个像getBounds()之类的矩形方法,然后定义x,y,height和width,然后让它跟随你的精灵。我通常在我的玩家角色中执行此操作并创建自己的边界框。也许只是我:/