我尝试设置边界矩形位置。
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
答案 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,然后让它跟随你的精灵。我通常在我的玩家角色中执行此操作并创建自己的边界框。也许只是我:/