相机初始化:
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);
工作正常,以便从屏幕坐标获取世界坐标。