我一直在关注"如何制作2D游戏";这里,但它没有显示如何使相机跟随一个特定的精灵。
我的渲染代码如下
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 */ }
}
另外,我有一个"资产"。类与我所有的纹理和精灵编码,不知道这是否相关。仔细想想,我不这么认为。
让相机跟随的最简单的方法是简单地将其位置设置为每次渲染调用的精灵的中心,如下所示:
//move your sprite
camera.position.set(sprite.getX(), sprite.getY(), 0);
camera.update();
//draw everything
这将使相机在每次迭代中都精确匹配精灵的位置。如果你想要一些更流畅/更复杂的下面,你应该看看某种形式的插值(更多信息可以在这里找到)。