gpt4 book ai didi

camera - 如何在 LibGDX 中让相机跟随玩家

转载 作者:行者123 更新时间:2023-12-02 08:06:03 25 4
gpt4 key购买 nike

我一直在关注“如何制作2D游戏”here ,但没有显示如何让相机跟随特定的 Sprite 。

我的渲染代码如下

public class [ClassName] {
polkymain game;
OrthographicCamera camera;

public static int PolkyX;
public static int PolkyY;

SpriteBatch batch;

public GameScreen(polkymain game) {
this.game = game;

camera = new OrthographicCamera();
camera.setToOrtho(true, 1280, 1240);

batch = new SpriteBatch();

PolkyX = 0;
PolkyY = 0;
}

@Override
public void render(float delta) {
Gdx.gl.glClearColor(0.95F, 0.95F, 0.95F, 0.95F);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

camera.update();
generalUpdate();

batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(Assets.Sprite_Mario_main, PolkyX, PolkyY);
batch.end();
}

public void generalUpdate(){
if(Gdx.input.isKeyPressed(Keys.D) || (Gdx.input.isKeyPressed(Keys.LEFT))
{
PolkyX += 5;
}

if(Gdx.input.isKeyPressed(keys.A) || (Gdx.input.isKeyPressd(Keys.RIGHT))
{
PolkyX -= 5;
}

if(Gdx.input.isKeyPressed(keys.S) || (Gdx.input.isKeyPressd(Keys.DOWN))
{
PolkyY -= 5;
}

if(Gdx.input.isKeyPressed(keys.W) || (Gdx.input.isKeyPressd(Keys.UP))
{
PolkyY += 5;
}
}

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

@Override
public void show() { /* TODO */ }

@Override
public void hide() { /* TODO */ }

@Override
public void pause() { /* TODO */ }

@Override
public void resume() { /* TODO */ }

@Override
public void dispose() { /* TODO */ }
}

另外,我有一个“ Assets ”类,其中包含我所有的纹理和 Sprite 编码,不知道这是否相关。现在想来我不这么认为。

最佳答案

让相机跟随的最简单方法是在每次渲染调用时将其位置设置为 Sprite 的中心,如下所示:

//move your sprite
camera.position.set(sprite.getX(), sprite.getY(), 0);
camera.update();
//draw everything

这将使相机每次迭代都与 Sprite 的位置完全匹配。如果您想要一些更平滑/更复杂的跟随,您应该研究某种形式的插值(更多信息可以找到 here )。

关于camera - 如何在 LibGDX 中让相机跟随玩家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24534159/

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