Java 发出碰撞坐标Libgdx
我有一个问题,我会解释: 我有一个由OrthogonalTiledMapRenderer和OrthographicCamera渲染的平铺贴图,我在create方法中有以下代码:Java 发出碰撞坐标Libgdx,java,libgdx,Java,Libgdx,我有一个问题,我会解释: 我有一个由OrthogonalTiledMapRenderer和OrthographicCamera渲染的平铺贴图,我在create方法中有以下代码: map=new TmxMapLoader().load("Map.tmx"); this.renderer=new OrthogonalTiledMapRenderer(map); this.camera=new OrthographicCamera(Gdx.graphics.getWidth(),Gdx.graphic
map=new TmxMapLoader().load("Map.tmx");
this.renderer=new OrthogonalTiledMapRenderer(map);
this.camera=new OrthographicCamera(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
this.camera.translate(Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/2);
this.camera.update();
在渲染方法中:
this.renderer.setView(camera);
this.renderer.render();
camera.update();
batchM.begin();
sprite.draw(batchM);
batchM.end();
我还有一个始终在渲染方法中按批绘制的精灵:
this.renderer.setView(camera);
this.renderer.render();
camera.update();
batchM.begin();
sprite.draw(batchM);
batchM.end();
始终在渲染方法中,我从TileMap提取所有MapObject,并检查它们是否击中精灵:
MapObjects collisionObjects = map.getLayers().get("objects").getObjects();
for(MapObject object : collisionObjects) {
if (object instanceof RectangleMapObject) {
RectangleMapObject rect = ((RectangleMapObject) object);
Vector3 coo=camera.project(new
Vector3(rect.getRectangle().x,rect.getRectangle().y,0));
com.badlogic.gdx.math.Rectangle Sprite= sprite.getBoundingRectangle();
com.badlogic.gdx.math.Rectangle Map=new com.badlogic.gdx.math.Rectangle(coo.x,coo.y,32,32);
//TEST
System.out.println("SPRITE X: "+Sprite.x+" Y: "+Sprite.y);
System.out.println("Object X: "+Map.x+" Y: "+Map.y);
if(Intersector.intersectRectangles(Sprite, Map, Sprite)) System.out.println("HIT");
}
}
我的问题是:
如果我保持正常窗口大小(即启动程序时的大小),将精确检测碰撞
而如果我减小或增大窗口的大小,碰撞将被不精确地检测到
我特别注意到这个奇怪的现象:
当我从地图中提取对象时,我显示了对象和精灵的坐标,我注意到精灵的坐标保持不变,而对象的坐标却在变化,我无法解释原因
非常感谢您的时间和帮助
编辑:
更改坐标的示例:
开始窗口大小:
雪碧X:310.0 Y:270.0
对象X:384.0 Y:352.0
击中
然后,我不移动精灵,只更改窗口大小(增加),得到以下结果:
雪碧X:310.0 Y:270.0
对象X:586.2 Y:540.4667在不使用相机的情况下尝试。投影是因为这会将世界坐标投影到屏幕坐标“Vector3 coo”,因此,当您更改屏幕大小时,您会更改对象X的位置。您好,是的,按照您说的做问题已经解决,但还有另一个问题,相机中有什么(平铺贴图)表示背景,因此如果我向下滚动(从而移动相机的y坐标),碰撞不会被检测到。轻轻地,你可以帮我一把。