LibGdx - TiledMap - 世界到屏幕坐标(移动相机)

时间:2017-02-26 19:08:20

标签: camera libgdx coordinates

相机初始化:

camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
camera.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
camera.update();

我想将相机移动到世界坐标(位置):

private void moveCameraTo(Vector3 position)
{
    OrthographicCamera camera = cameraController.getOrthographicCamera();

    Vector3 newPosition = camera.project(position);
    camera.position.set(newPosition.x, newPosition.y, 0f);
    camera.update();
}

但似乎

camera.project(Vector3);

总是返回随机坐标(如果我多次调用该方法,相机将从A点移动到B点,B点移动到A点)。

例如,使用世界坐标:(x:648.0,y:877.333)

第一个电话:(x:600,y:360)

第二个电话:(x:648,y:877.3)< - 世界坐标

第3个电话:(x:600,y:360)

第4次电话:(x:648,877.3)< - 世界坐标

...

如果我在不同的呼叫之间手动移动摄像机,坐标将会改变。

尝试将纹理移动到世界坐标时,我遇到了类似的问题。我通过替换

修复了它
camera.project(pos);
spriteBatch.draw(texture, pos.x, pos.y);

通过

spriteBatch.setProjectionMatrix(camera.combined);
spriteBatch.draw(texture, pos.x, pos.y);

请注意:

camera.unproject(Vector3);

工作正常,以便从屏幕坐标获取世界坐标。

0 个答案:

没有答案