首页 > 解决方案 > 如何在 libgdx 中创建非常简单的暂停/恢复游戏

问题描述

我是 libgdx 的新手,如何在 libgdx 中创建非常简单的暂停/恢复游戏?

我正在尝试使用 libgdx 实现简单的游戏。我想创建暂停游戏,但不知道如何根据用户输入暂停和恢复游戏。请提出想法以及一些实用代码来实现相同。我正在使用 libgdx 库中演示的简单游戏代码。谢谢你。

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    float x;
    float y;

@Override
public void create () {
    batch = new SpriteBatch();
    img = new Texture("badlogic.jpg");
}

@Override
public void render () {
    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    x= x+4;

    if(Gdx.input.isKeyPressed(Input.Keys.P)){
      // pause
        
    }

    batch.begin();
    batch.draw(img, x, y);
    batch.end();
}

@Override
public void dispose () {
    batch.dispose();
    img.dispose();
}

}

按P键按游戏

if(Gdx.input.isKeyPressed(Input.Keys.P)){
      // if(game.pause()){
             game.resume();
          }else{
           game.pause();
             }

    }

任何想法???谢谢

标签: javalibgdx

解决方案


您的渲染方法称为可重复的,“暂停”的含义取决于您。您必须实现处理“暂停”状态的逻辑,因为这对 libGDX 没有任何意义。

如果您希望在游戏暂停时一切都冻结但仍要绘制,最好的方法是(恕我直言)将绘制与计算(动作和东西)完全分开。因此,即当您的渲染方法被调用时,您将调用您的绘图方法一次(绘制图形),但您还将计算您的计算方法应该调用多少次(在帧速率上具有相同的游戏速度)并调用它很多次。

然后,当您的游戏暂停时,您将跳过调用计算方法而仅调用绘图方法。所以什么都不会移动,直到您结束暂停,将绘制相同的图形。

为了保持暂停状态,您可以使用一些布尔变量。每次按下 p 键时,您都应该反转它,例如:

if(Gdx.input.isKeyPressed(Input.Keys.P)){
    paused = !paused;
}

或其他东西(如@Tenfour04 建议的那样)。


推荐阅读