精灵在libgdx中坚持使用相机?

时间:2014-01-23 04:05:27

标签: java opengl libgdx render spritebatch

我想让精灵放在屏幕上,然后将相机拖到世界各地。但是,当我拖动相机时,精灵会粘在相机上,并且仍然位于屏幕的底部。

使用tilemap(.tmx文件)和渲染器不会发生这种情况:相机可以拖动tilemap,而tilemap不会粘在相机上。 spriteBatch很难,精灵停留在屏幕的底部。

这是我的代码:

map = MyLoader.manager.get("data/mMap.tmx");
float unitScale = 1 / 64f;
renderer = new OrthogonalTiledMapRenderer(map, unitScale);

@Override
public void render() {
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    camera.update();
    renderer.setView(camera);
    renderer.render();//tilemap works fine

    //sprite
    //batchMap.setProjectionMatrix(camera.combined);//wrong

    batchMap.begin();
    if ( scrFactoryMap.maps.size() > 0 ) {
        scrFactoryMap.getMap(0).draw(batchMap);//sprite sticks to the camera
    }
    str = "string";
    font.draw(batchMap, str, 50,50);//font sticks to the camera
    batchMap.end();
}


private void slerpCamera(){
    //...
    camera.position.add( camX, camY, 0 );
    camera.update();
}

1 个答案:

答案 0 :(得分:2)

为什么你对此发表评论,将错误置于其上?

//sprite
//batchMap.setProjectionMatrix(camera.combined);//wrong

每当您变换(即移动)相机时,您必须将新的ProjectionMatrix设置为SpriteBatch。

取消注释:)