java - Libgdx:FitViewPort 不工作

标签 java camera libgdx viewport

我得到了 super 马里奥1级的图像(1563x224):super mario level1 但当你玩游戏时,你看不到所有的关卡。
这些是我的值(value)观:

// level1.png image size: 1563x224
// viewPort size: 300x224
public static final float LEVEL1_WIDTH = 1563f;
public static final float LEVEL1_HEIGHT = 224f;

public static final float VIEWPORT_WIDTH = 300f;
public static final float VIEWPORT_HEIGHT = 224f;

这是我的游戏构造函数的一部分:

    _gamecam = new OrthographicCamera(ZombieGame.LEVEL1_WIDTH, ZombieGame.LEVEL1_HEIGHT); // set the world size
    _viewport = new FitViewport(ZombieGame.VIEWPORT_WIDTH, ZombieGame.VIEWPORT_HEIGHT, _gamecam); // set the viewport size
    _gamecam.position.set(ZombieGame.VIEWPORT_WIDTH / 2f, ZombieGame.VIEWPORT_HEIGHT / 2f, 0); // set the camera to be in the middle of the viewport
    _background = new Texture("level1.png"); // load level1 (background) image

这是我的渲染方法:

@Override
public void render(float delta) {
    _gamecam.update();
    Gdx.gl.glClearColor(0,1,0,1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    _game.batch.setProjectionMatrix(_gamecam.combined);
    _game.batch.begin();
    _game.batch.draw(_background, 0, 0, ZombieGame.LEVEL1_WIDTH, ZombieGame.LEVEL1_HEIGHT);
    _game.batch.end();
}

出于某种原因,它似乎只在这些口粮中起作用,当我尝试更改我的 VIEWPORT_HEIGHTVIEWPORT_WIDTH 时,它显示在我的图像之外:

查看端口大小:300x224(工作): 300x224 image working

查看端口大小:300x100(不起作用): 300x100 image not working

我做错了什么?

最佳答案

FitViewport始终保持虚拟屏幕尺寸(虚拟视口(viewport))的纵横比,同时尽可能缩放以适合屏幕。

OrthographicCamera 的构造函数中传递viewportWidthviewportHeight,而不是您的.tmx 总尺寸。

_gamecam = new OrthographicCamera();
_gamecam.setToOrtho(false,ZombieGame.VIEWPORT_WIDTH,ZombieGame.VIEWPORT_HEIGHT);
_viewport = new FitViewport(ZombieGame.VIEWPORT_WIDTH, ZombieGame.VIEWPORT_HEIGHT, _gamecam);

我们使用视口(viewport)是因为它根据我们的ViewPort管理相机的viewportWidth和viewportHeight选择。

每当发生调整大小事件时,计算视口(viewport)参数并更新相机。

@Override
public void resize(int width, int height) {
    _viewport.update(width,height,true); 
}

关于java - Libgdx:FitViewPort 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44211249/

相关文章:

java - 我的java代码不同步

java - 读取Oracle 10gas上的环境变量

java - 在移动设备上禁用缩放

c# - 我应该如何使用 MediaCapture 访问 UWP 应用程序中的摄像头?

java - 将 TextField 与 LibGDX 结合使用

java - 哪个工具/插件可用于在尽可能短的时间内从远程位置复制文件?

android - 手电筒在某些设备上不工作

Android 访问 HTC Thunderbolt 上的前置摄像头

java - Libgdx 变量类型的内存大小

java - Libgdx:配乐循环滞后