2015-10-04 242 views
0

我试图设置边界矩形的位置。如何设置BoundingRectangle位置

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

我也试图设置它的位置,只要条件==真

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

回答

1

当您拨打getBoundingRectangle()时,生成和/或更新边界Rectangle。这意味着你没有使用Rectangle类的setX或setY修改sprite顶点。改为使用Sprite.setPosition(x,y);以这种方式移动精灵将移动边界矩形。

还有下列方法,改变精灵的边界矩形(不要混淆这setX的和SETY使用矩形类setX的和塞蒂,这一修改精灵的顶点):

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()); 
+0

我所做的是在x,y坐标上渲染精灵,而不是在渲染之前设置位置,batch.draw(spr,x,y); –

0

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