libgdx平铺地图获取玩家在整个地图中的位置以制作一个小地图

libgdx平铺地图获取玩家在整个地图中的位置以制作一个小地图,libgdx,tiled,Libgdx,Tiled,实际上,我使用相机缩放(在主相机上使用正交平铺贴图渲染器绘制平铺贴图的一部分)。在box2d世界中,摄像机位于玩家位置(玩家始终位于屏幕中心)的中心 // Set camera postion center on player (box2d body) on every update camera.position.set(player.getBody().getWorldCenter(), 0); 我想用第二个摄像头创建一个小地图。一个简单的填充矩形,其中有一个点代表玩家在地图上的位置。 因

实际上,我使用相机缩放(在主相机上使用
正交平铺贴图渲染器
绘制平铺贴图的一部分)。在box2d世界中,摄像机位于玩家位置(玩家始终位于屏幕中心)的中心

// Set camera postion center on player (box2d body) on every update
camera.position.set(player.getBody().getWorldCenter(), 0);
我想用第二个摄像头创建一个小地图。一个简单的填充矩形,其中有一个点代表玩家在地图上的位置。 因此,我创建了一个新相机:

minimapCamera = new OrthographicCamera(1280, 720); // as my main camera
minimapCamera.zoom = 6; // larger zoom
minimapCamera.position.set(-1280 * 2, 720 * 3, 0); // align bottom right corner
我试着画一些形状:

ShapeRenderer sr = new ShapeRenderer();
sr.setAutoShapeType(true);
sr.setProjectionMatrix(minimapCamera.combined);
sr.begin(ShapeType.Filled);
sr.setColor(0.5f, 0.5f, 0.5f, 0.3f);
// minimap rectangle background
sr.rect(0, 0, minimapCamera.viewportWidth, minimapCamera.viewportHeight);
sr.setColor(1f, 0f, 0f, 0.4f);
// player circle point
sr.circle(playerPos.x, playerPos.y, 20);
sr.end();
但是我如何计算玩家在整个平铺地图中的位置?如何仅绘制缩放地图的一部分?(我不想画所有的地图,只想画一个比我的主相机更大的部分)

编辑:
如果我想在我的小地图中重复使用我的平铺地图,我如何在小地图中只绘制玩家可见的部分(目前,即使我指定了一个小的相机尺寸,所有地图都会被渲染)?

假设你的平铺地图使用行和列,并且每个单元格都有一个设置的宽度和高度,您可以这样获得玩家在平铺贴图数组中的位置(希望您不介意JavaScript):


这给了玩家在这个世界上占据的精确的X和Y瓦片。

我想你必须调整数学来考虑当前的视口,因为他可能不会同时绘制/看到整个地图。
var player={x:200,y:200};/* Or whatever position. */
var tile_width=tile_height=32;/* Or whatever dimension you're using. */

player.tile_x=Math.floor(player.x/tile_width);
player.tile_y=Math.floor(player.y/tile_height);