【发布时间】:2014-03-22 04:37:27
【问题描述】:
我将渲染坐标系设置为:
camera.setToOrtho(false, 288, 512);
但触摸坐标系是另一个(真,不是假)
如何翻转它以读取特殊位置的输入?
【问题讨论】:
标签: android touch libgdx coordinates flip
我将渲染坐标系设置为:
camera.setToOrtho(false, 288, 512);
但触摸坐标系是另一个(真,不是假)
如何翻转它以读取特殊位置的输入?
【问题讨论】:
标签: android touch libgdx coordinates flip
简单地翻转并不是您应该对触摸输入进行的唯一操作。输入以像素坐标给出,而您的相机使用 288x512 单位系统,无论显示尺寸如何。每当您获得触摸事件时,它们都会以当前显示器的像素坐标给出,这对于不同的手机是不同的,甚至当您在桌面上调整屏幕大小时也会发生变化。这是您需要的代码:
Vector3 v3 = new Vector3(screenX, screenY, 0);
camera.unproject(v3);
screenX 和screenY 是给InputProcessor 函数或由Input.getX() 和Input.getY() 返回的触摸坐标。需要 0 是因为 Camera.unproject() 需要 Vector3,而 OrthographicCamera 会忽略它。
这会将v3.x 和v3.y 设置为相机坐标系中的触摸坐标。
【讨论】:
Gdx.input.getX() 和Gdx.input.getY() 获得的触摸坐标,或者,如果您使用的是InputProcessor,则可以使用函数调用中给出的坐标。 (由于从another answer 复制而导致不清楚,抱歉,我将对其进行编辑..)至于0,它是必需的,因为Camera.unproject 需要Vector3,它被OrthographicCamera 忽略。