Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java libgdx如何以世界单位获取高度和宽度_Java_Libgdx_Viewport_Viewport Units - Fatal编程技术网

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))
so
V_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);
设置投影矩阵将确保批次绘制到该摄影机,从而通过您创建的视口。我希望这有帮助,如果你还有任何问题,请告诉我。您可以找到有关视口的详细信息