【问题标题】:Game takes up only the top right corner of the screen in LIBGDX在 LIBGDX 中游戏只占据屏幕的右上角
【发布时间】:2016-02-14 07:13:11
【问题描述】:

我正在研究 LIBGDX 。我的游戏只占据了屏幕的右上角,而不是占据了整个宽度和高度。 在我的屏幕更新方法中,我有这段代码,

      public void update(float dt) {   
         ......
        gamecam.position.x = this.gamehero.heroBody.getPosition().x; -- 1
        gamecam.position.y = this.gamehero.heroBody.getPosition().y; -- 2
         ......
       }

但是,当我删除代码的第二行时,游戏会占据整个屏幕,但相机不会在 y 轴上跟随玩家。附上第二行代码时的游戏截图

而且,当我删除第二行代码时,它会占据整个屏幕

我不知道怎么解决。任何建议都会更好。谢谢

【问题讨论】:

  • 好像你已经回答了你的问题 -> 只需删除第二行:-|
  • 我说如果我删除第二行,相机不会在 y 轴上跟随玩家。但我需要相机跟随@user3351949

标签: libgdx


【解决方案1】:

用这个创建你的相机:

gamecam = new OrthographicCamera(SCREEN_WIDTH, SCREEN_HEIGHT);
gamecam.position.set(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, 0);

每次编辑位置后更新相机gamecam.update()

public void update(float dt) {   
    gamecam.position.x = this.gamehero.heroBody.getPosition().x; // -- 1
    gamecam.position.y = this.gamehero.heroBody.getPosition().y; // -- 2
    gamecam.update(); // -- 3
}

【讨论】:

    【解决方案2】:

    Kolesnikovich 在他的代码顶部处于正确的轨道上。但不幸的是,最终相机的位置和你完全一样。

    您实际上在做的是设置凸轮的中心位置。因此,您需要做的就是将相机的位置坐标增加视口宽度和高度的一半。

    public void update(float dt) {   
        gamecam.position.x = this.gamehero.heroBody.getPosition().x + 
             gamecam.getViewportWidth / 2;
        gamecam.position.y = this.gamehero.heroBody.getPosition().y +
            gamecam.getViewportHeight / 2;
        gamecam.update(); // -- 3
    }
    

    【讨论】:

    • 感谢它的工作,但视口显示在略高于地面的位置。 IE。部分地面未显示。任何想法 ? @Menno Gouw
    • 是的,现在您将凸轮的左/下部分定位在角色的左下部分。因此,如果您想让相机在玩家下方显示一个额外的图块,您可以从 Y 位置减去图块高度。 gamecam.position.y = this.gamehero.heroBody.getPosition().y + gamecam.getViewportHeight / 2 - tileHeight; 同样,您可以对相机的 X 位置执行此操作。基本上你用播放器移动相机,你添加或减去的任何东西都是相机的偏移量,就像我们之前用一半的视口宽度/高度所做的那样。
    • 用 tileHeight 减去不起作用。我刚刚使用了 tilePixelWidth = prop.get("tilewidth", Integer.class);然后像你说的那样减去 x 位置的 tilePixelWidth 但是当我使用这个@Menno Gouw 时我也看不到这个世界
    • 如果您将相机偏移了瓷砖的高度,那么它将修复它。它与递增宽度 vp 宽度/高度完全相同。我不知道你是如何绘制瓷砖的,所以不可能知道要使用什么数字。尝试使用偏移量。如果prop.get("tilewidth", Integer.class); 返回类似 1000 的值,但在绘制时使用 10,它显然不起作用。别再想了,这很容易:you set camera middle position at character 然后是 offset camera by half screen size,现在只是 offset it by the tile size
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多