Java libgdx如何以世界单位获取高度和宽度
我试图理解Java libgdx如何以世界单位获取高度和宽度,java,libgdx,viewport,viewport-units,Java,Libgdx,Viewport,Viewport Units,我试图理解Libgdx中视口的用法我有变量V_WIDTH=800和V_HEIGHT=(V_WIDTH/(4f/3f))soV_HEIGHT=600。以下是初始化和更新视口的方式: // init viewport (in the constructor): viewport = new FitViewport(NoThanksClient.V_WIDTH, NoThanksClient.V_HEIGHT); // in the resize method: viewpo
Libgdx中视口的用法
我有变量V_WIDTH=800
和V_HEIGHT=(V_WIDTH/(4f/3f))
soV_HEIGHT=600
。以下是初始化和更新视口的方式:
// init viewport (in the constructor):
viewport = new FitViewport(NoThanksClient.V_WIDTH, NoThanksClient.V_HEIGHT);
// in the resize method:
viewport.update(width,height, true);
private Camera camera;
private Viewport viewport;
public void create() {
camera = new OrthographicCamera();
viewport = new FitViewport(NoThanksClient.V_WIDTH, NoThanksClient.V_HEIGHT, camera);
}
我有一个绿色矩形的纹理,我试图在左上角绘制它。我就是这样做的:
batch.draw(
frameTexture,
0,
viewport.getScreenHeight() - FRAME_TEXTURE_HEIGHT,
FRAME_TEXTURE_WIDTH,
FRAME_TEXTURE_HEIGHT);
一切都很顺利。但是当我调整屏幕大小时,纹理(frameTexture
)会从屏幕中进出。为什么不留在拐角处?我该怎么做才能让它保持不变呢?好吧,你的视口也需要一个摄像头。摄像头是将游戏显示在屏幕上的设备。视口用于管理摄影机的大小。当使用批次绘制时,需要将批次链接到该摄影机。以下是初始化视口的方式:
// init viewport (in the constructor):
viewport = new FitViewport(NoThanksClient.V_WIDTH, NoThanksClient.V_HEIGHT);
// in the resize method:
viewport.update(width,height, true);
private Camera camera;
private Viewport viewport;
public void create() {
camera = new OrthographicCamera();
viewport = new FitViewport(NoThanksClient.V_WIDTH, NoThanksClient.V_HEIGHT, camera);
}
这将视口将要操纵的摄影机设置为正交摄影机。您也可以使用相机的任何子类
调整大小的方法很好,只需在绘制之前向渲染方法添加一条线即可
batch.setProjectionMatrix(camera.combined);
batch.draw(
frameTexture,
0,
viewport.getScreenHeight() - FRAME_TEXTURE_HEIGHT,
FRAME_TEXTURE_WIDTH,
FRAME_TEXTURE_HEIGHT);
设置投影矩阵将确保批次绘制到该摄影机,从而通过您创建的视口。我希望这有帮助,如果你还有任何问题,请告诉我。您可以找到有关视口的详细信息