【问题标题】:How to set BoundingRectangle Position如何设置 BoundingRectangle 位置
【发布时间】:2016-01-01 06:45:45
【问题描述】:

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

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

【问题讨论】:

    标签: java libgdx position bounding-box


    【解决方案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());
    

    【讨论】:

    • 我所做的是在 x,y 坐标上渲染精灵而不是在渲染之前设置位置,batch.draw(spr, x, y);
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-11-18
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 2012-12-27
      • 2016-10-08
      相关资源
      最近更新 更多