繁体   English   中英

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

[英]LibGDX collision detection on moving and rotating object (rectangle enemy)

我试图使碰撞检测正常工作,但是当我这样做时,碰撞区域会不断移动。 不管我尝试了什么。 有2个物体,物体在移动,我无法获得碰撞的区域以跟随敌人/物体。

我正在使用以下方法来查看碰撞是否会起作用,并且无法正确跟随敌人。

enemy class extends sprite {

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

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

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;

}

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

从代码中看不清楚是不是您的问题,但是要检查两个矩形是否冲突,可以使用Intersector类。

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

相交点也可以与圆和多边形一起使用。 我通常将其放到Act方法中,该方法从Actor类中覆盖。 如果您不使用舞台,我想您可以在render方法中进行检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM