【发布时间】:2016-02-07 11:43:12
【问题描述】:
我的 Tiled 2D 平台游戏的虚拟大小为 800x480,我使用 StretchViewport 作为我的 Stage. 我将游戏摄像机设置如下:
camera = new BoundedCamera(18, 10, map.width, map.height);
BoundedCamera 只是用一些额外的代码扩展了OrthographicCamera,这样当玩家向地图边缘移动时,地图就会停留在屏幕内。
在render() 我愿意:
camera.setPosition(player.getX(), player.getY());
camera.update();
tiledRenderer.setView(camera);
tiledRenderer.render();
一切正常。现在我想实现一个小地图,我想在 (0, 380) 处显示大小为 (100, 100) 的小地图。所以我创建了第二个摄像头和一个ScalingViewport:
minimapCamera = new OrthographicCamera(18, 10);
minimapViewport = new ScalingViewport(Scaling.none, map.width, map.height, minimapCamera);
minimapViewport.setScreenBounds(0, 380, 100, 100);
对于渲染,我会这样做:
public void renderMinimap()
{
minimapViewport.apply();
minimapBatch.begin();
minimapCamera.position.set(player.getX(), player.getY());
minimapCamera.update();
minimapRenderer.setView(minimapCamera);
minimapRenderer();
minimapBatch.end();
level.getStage().getViewport().apply();
}
但是,在上述情况下,小地图不会在视口范围内被“剪裁”。小地图层被绘制在视口边界的左侧和底部。
我做错了什么?
【问题讨论】:
标签: camera libgdx screen viewport stage