【发布时间】:2022-06-10 19:05:25
【问题描述】:
我一直在寻找答案很长时间,但我找不到它。 我用:
public Vector2 getWorldPositionFromScreen(Vector3 v){
Vector3 vc = orthographicCamera.unproject(v);
return new Vector2(vc.x, vc.y);
}
但是问题是y坐标被翻转了,我不知道怎么翻转回来。我尝试了以下方法,但都没有奏效:
public Vector2 getWorldPositionFromScreen(Vector3 v){
int screenHeight = Toolkit.getDefaultToolkit().getScreenSize().height;
Vector3 vc = orthographicCamera.unproject(new Vector3(v.x, screenHeight - v.y, v.z));
return new Vector2(vc.x, vc.y);
}
我尝试调试并意识到 Gdx.input.getX() 和 ...getY() 返回相对于窗口的坐标,而不是屏幕 但是除了垂直反转之外,camera.unproject 还可以解决这个问题。但我发现反转来自 Gdx.input.getY()
【问题讨论】:
-
LibGdx 使用 Y-up 坐标系。所以你在图像中标记的零点不在左上角,而是在左下角,Y轴向上方向增加。使用这个坐标系比翻转 y 坐标更容易,因为它在 libgdx 中的任何地方都使用。
-
@Tobias 我每次更新都显示值“Gdx.input.getY()”并看到了这个结果
-
@Tobias imgur.com/a/joXtUop