LibGDX对移动和旋转物体的碰撞检测(矩形敌人)

时间:2014-06-17 02:25:44

标签: java android libgdx collision

我正在尝试使碰撞检测正常工作但是当我这样做时,碰撞区域一直在移动。无论我怎样尝试。 有2个物体,物体在移动,我不能让碰撞区域跟随敌人/物体。

我正在使用下面的方法来查看碰撞是否会起作用,并且它不能正常跟踪敌人。

enemy class extends sprite {

以上是我如何使用精灵扩展的示例。

对象/敌人是来自libgdx的精灵,该类由精灵扩展。

shapeRenderer.begin(ShapeType.Filled);
shapeRenderer.setColor(Color.RED);

shapeRenderer.rect(rect1.getX() + (rect1.getWidth() / 2), rect1.getY()  + (rect1.getHeight() / 2) - 2, rect1.getOriginX() - 1, rect1.getOriginY() - 4, 1.0f, 1.0f, rect1.getRotation());

shapeRenderer.rect(rect2.getX() - 10, rect2.getY() - 10, rect2.getWidth() - 10, rect2.getHeight() - 10, rect2.getOriginX(), rect2.getOriginY(), rect2.getRotation());

shapeRenderer.end();

这是在敌人类碰撞检查中

rect.set(getX() + (getWidth() / 2), getY()  + (getHeight() / 2) - 2, getOriginX() - 1, getOriginY() - 4);

这是为了看敌人是否在碰撞

public boolean collides(Ball ball) {
  if (getX() < ball.getX()) {
     return (Intersector.overlaps(ball.getRect1(), rect));
  }
  return false;

}

任何帮助都会非常好。 谢谢

1 个答案:

答案 0 :(得分:0)

从您的代码中看到您的问题并不是很清楚,但是为了能够检查两个矩形是否发生碰撞,您可以使用Intersector类。

  if(Intersector.overlaps(rectangle1, rectangle2) {
      // Do here whatever you want.
}

Intersector也可以使用圆和多边形。我通常把它放到我从Actor类重写的act方法中。如果你没有使用舞台我想你可以在渲染方法中检查它。