OrthogonalTiledMapRenderer
实际上,我使用相机变焦(在我的主相机上)绘制了我的平铺地图的一部分。相机以 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();
但是如何计算playerPos
整个平铺地图中的玩家位置?以及如何只绘制缩放地图的一部分?(我不想绘制所有地图,而是比我的主相机更大的部分)。
编辑:如果我想在我的小地图中重用我的平铺地图,我怎样才能在小地图中只绘制玩家可见部分(目前,即使我指定了一个小的相机尺寸,所有地图也会被渲染)?