java - 如何在 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();
}
}
任何想法???谢谢
解决方案
您的渲染方法称为可重复的,“暂停”的含义取决于您。您必须实现处理“暂停”状态的逻辑,因为这对 libGDX 没有任何意义。
如果您希望在游戏暂停时一切都冻结但仍要绘制,最好的方法是(恕我直言)将绘制与计算(动作和东西)完全分开。因此,即当您的渲染方法被调用时,您将调用您的绘图方法一次(绘制图形),但您还将计算您的计算方法应该调用多少次(在帧速率上具有相同的游戏速度)并调用它很多次。
然后,当您的游戏暂停时,您将跳过调用计算方法而仅调用绘图方法。所以什么都不会移动,直到您结束暂停,将绘制相同的图形。
为了保持暂停状态,您可以使用一些布尔变量。每次按下 p 键时,您都应该反转它,例如:
if(Gdx.input.isKeyPressed(Input.Keys.P)){
paused = !paused;
}
或其他东西(如@Tenfour04 建议的那样)。
推荐阅读
- javascript - 如何调试通过 HtmlService 提供的 Javascript?
- javascript - 如何实现搜索功能?
- sql - 在 ms 中存储 Select Query 输出访问现有表
- ansible - ansible zypper 安装卡在 SUSE 12 SP5 上
- xml - 包含 text() 和子节点的 node() 必须转换为大写文本
- php - 下拉购物车允许我将商品数量修改为最多五件,即使五件商品不可用
- azure - Azure CLI 无法在 azure 函数应用中添加自动缩放条件
- node.js - 使用 NodeJS 在浏览器中显示 GET 请求结果
- c# - 使用 installshield 自定义向导将文件复制到目标文件夹
- java - 在 Tycho 中生成 p2 存储库依赖关系的分层依赖树