gpt4 book ai didi

java - Libgdx 无需 TiledMap 创建快速 map

转载 作者:行者123 更新时间:2023-12-01 22:32:25 24 4
gpt4 key购买 nike

我正在尝试制作一款像《我的世界》(2D)这样的游戏。我不想使用 TiledMap,因为它无法(我没有找到方法)生成随机 map 。

我的测试和代码:

public class game implements ApplicationListener {
private OrthographicCamera camera;
private SpriteBatch batch;

private Sprite block[] = new Sprite[26];
private int createdBlocks = 0;
private int line = 0;
@Override
public void create() {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();

camera = new OrthographicCamera(w, h);
batch = new SpriteBatch();

camera.position.x = 480;
camera.position.y = 320;
camera.update();

graphics.create();
player.create();
}

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

@Override
public void render() {
for(int i=0; i<=25;i++){
block[i] = new Sprite(graphics.stone);
if(i==5 || i==10 || i==15 || i==20)
line++;
int i2 = i;
if(i > 5)
i = 0;
block[i].setPosition(i2 * 32, line * 32);
}
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

batch.setProjectionMatrix(camera.combined);
batch.begin();
player.render(batch);
for(int i=0; i<=100;i++)
block[i].draw(batch);
batch.end();
}

@Override
public void resize(int width, int height) {
}

@Override
public void pause() {
}

@Override
public void resume() {
}
}

它只是滞后、缓慢(加载)并且没有用。

有更好的方法吗?

最佳答案

关于您的代码:

您每帧创建大量新的 Sprite (您在 render() 方法中的循环)。您应该在其他地方创建 Sprite ,可能是在 create() 方法中。

关于不使用 TiledMap 创建 map :

您可以使用 SpriteCache 代替 SpriteBatch 来构建基于图 block 的地形。您可以查看使用 SpriteCache here 的示例

关于TiledMap的随机生成

.tmx 文件 - 只是 XML 结构文件。您可以使用任何 XML 解析器在代码中生成它,这就是为什么创建随机 TiledMap 不是问题。以下是一些基本说明:

  1. 为您的随机 map 创建图 block 集。
  2. 在 tmx 编辑器中使用此集创建示例 map 。
  3. 使用任何文本编辑器打开它并查看文件结构。
  4. 使用任何 XML 解析器在代码中生成类似的文件(您可以使用 parser 中内置的 libgdx)

P.S 我不建议您开发自己的 2D map 解决方案,在 90% 的情况下 tmx 足以创建 2D map 。您还已经在 libgdx 中优化了 tmx 渲染类。

关于java - Libgdx 无需 TiledMap 创建快速 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com