【问题标题】:libgdx flip input coordinate systemlibgdx 翻转输入坐标系
【发布时间】:2014-03-22 04:37:27
【问题描述】:

我将渲染坐标系设置为:

camera.setToOrtho(false, 288, 512);

但触摸坐标系是另一个(真,不是假)

如何翻转它以读取特殊位置的输入?

【问题讨论】:

    标签: android touch libgdx coordinates flip


    【解决方案1】:

    简单地翻转并不是您应该对触摸输入进行的唯一操作。输入以像素坐标给出,而您的相机使用 288x512 单位系统,无论显示尺寸如何。每当您获得触摸事件时,它们都会以当前显示器的像素坐标给出,这对于不同的手机是不同的,甚至当您在桌面上调整屏幕大小时也会发生变化。这是您需要的代码:

    Vector3 v3 = new Vector3(screenX, screenY, 0);
    camera.unproject(v3);
    

    screenXscreenY 是给InputProcessor 函数或由Input.getX()Input.getY() 返回的触摸坐标。需要 0 是因为 Camera.unproject() 需要 Vector3,而 OrthographicCamera 会忽略它。

    这会将v3.xv3.y 设置为相机坐标系中的触摸坐标。

    【讨论】:

    • 什么是screenX和screenY? 0 是什么?
    • screenX 和 screenY 是您可以使用Gdx.input.getX()Gdx.input.getY() 获得的触摸坐标,或者,如果您使用的是InputProcessor,则可以使用函数调用中给出的坐标。 (由于从another answer 复制而导致不清楚,抱歉,我将对其进行编辑..)至于0,它是必需的,因为Camera.unproject 需要Vector3,它被OrthographicCamera 忽略。
    • 无论您从哪里获得输入。你收集的每一个触摸值都应该经过这个。