我正在寻求改进我的碰撞检测算法。我正在使用LibGDX,没有Box2D。我的问题是,当我的屏幕上有太多实体时,fps下降到15。
这是我目前所拥有的,我正在检查地图上的每个对象,我正在尝试降低每个实体检查的对象数量。
private static void tileCollision(Entity entity) {
MapObjects objects = GameScreen.map.getLayers().get(Consts.COLLISION_LAYER_ID).getObjects();
Vector2 currPos = new Vector2(entity.getPosition().x, entity.getPosition().y);
for (RectangleMapObject rectangleObject : objects.getByType(RectangleMapObject.class)) {
Rectangle rectangle = rectangleObject.getRectangle();
if (Intersector.overlaps(rectangle, entity.getPosition())) {
entity.setX(entity.getPrePosition().x);
if (Intersector.overlaps(rectangle, entity.getPosition())) {
entity.setX(currPos.x);
entity.setY(entity.getPrePosition().y);
if (Intersector.overlaps(rectangle, entity.getPosition())) {
entity.setX(entity.getPrePosition().x);
}
}
}
}
}