[英]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.