gpt4 book ai didi

java - 如何让我的相机更新与我的玩家 Sprite 相同的帧?

转载 作者:行者123 更新时间:2023-12-02 09:55:05 31 4
gpt4 key购买 nike

在 LibGDX 中,当我移动它时,我试图让我的正交相机跟随玩家 Sprite 。目前,玩家 Sprite 首先被更新,然后在下一帧中相机更新到上一帧中玩家 Sprite 的位置。这是一个例子: https://i.imgur.com/wxJUizU.gifv

我尝试将 gameMap.render(cam) 移动到方法的底部,但这不仅没有解决我的问题,而且还将 map 纹理放置在玩家 Sprite 上方,因此您将看不到当玩家在 map 下移动时,玩家 Sprite 就不再存在了。

以下是渲染玩家 Sprite 和相机的代码:

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

cam.viewportHeight = Gdx.graphics.getHeight() / 3;
cam.viewportWidth = Gdx.graphics.getWidth() / 3;

gameMap.render(cam);

gameMap.getTiledMapRenderer().getBatch().begin();
player.draw(gameMap.getTiledMapRenderer().getBatch());
gameMap.getTiledMapRenderer().getBatch().end();

cam.position.x = player.getX() + (player.getWidth() / 2);
cam.position.y = player.getY() + (player.getHeight() / 2);
cam.update();
}

最佳答案

通常,您希望将逻辑分为两个部分:

  • 更新

  • 渲染

因此,在每一帧之前,您需要执行任何相关的计算。您的相机当前更新较晚,因为直到游戏 map 更新后它才会执行逻辑。例如:

// Perform logic and update the state
public void Update () {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

cam.viewportHeight = Gdx.graphics.getHeight() / 3;
cam.viewportWidth = Gdx.graphics.getWidth() / 3;

gameMap.getTiledMapRenderer().getBatch().begin();

cam.position.x = player.getX() + (player.getWidth() / 2);
cam.position.y = player.getY() + (player.getHeight() / 2);
}

// Draw map
public void Render () {
gameMap.render(cam);

player.draw(gameMap.getTiledMapRenderer().getBatch());
gameMap.getTiledMapRenderer().getBatch().end();

cam.update();
}

我不熟悉您正在使用的框架,所以我无法判断它是否会运行,但是在任何游戏开发情况下使用框架时,这就是您想要处理事情的方式。

关于java - 如何让我的相机更新与我的玩家 Sprite 相同的帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56061650/

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