Как установить 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

2 ответа

Решение

Ограничивающий Rectangle генерируется и / или обновляется при звонке getBoundingRectangle(), Это означает, что вы не изменяете вершины спрайта с помощью setX или setY Rectangle учебный класс. Вместо этого используйте 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());

Прежде всего, я просто хочу указать, что в вашем System.out.println() вы печатаете две X-координаты. В любом случае, координаты X и Y находятся в нижнем левом углу вашего спрайта, поэтому, если ваш Sprite равен 100 x 100, результат будет правильным. Я бы порекомендовал создать свой собственный метод прямоугольника, называемый getBounds() или что-то еще, и определить x, y, высоту и ширину, а затем заставить его следовать вашему спрайту. Я обычно делаю это в своем игровом персонаже и создаю его собственные ограничивающие рамки. Может быть, это только я:/

Другие вопросы по тегам