我正在编写LIBGX中的按钮。它在桌面上工作得很好,但是当我在Android上启动它时,我必须在不同的地方触摸才能触发它(我使用的是真正的Android设备,而不是AVD)以下是描述它的图片:
TouchDown代码下方:
Gdx.input.setInputProcessor(new InputAdapter () {
public boolean touchDown (int x, int y, int pointer, int button) {
// your touch down code here
Vector3 coords = new Vector3(x, y, 0);
camara.unproject(coords);
if(coords.x >= 52 && coords.x<=129 && coords.y >= 158 && coords.y<=253){
shoot(1);
}
return true; // return true to indicate the event was handled
}
});
没有Vector3我遇到了同样的问题,我开始使用它,因为它被建议,但没有解决太多问题。这是相机的声明:
camara = new OrthographicCamera();
camara.setToOrtho(false, 800, 480);
我做了一些研究,但无法找到合适的解决方案,而且我发现相机(ortographic,现实世界等)非常混乱。我会继续挖掘,这需要几个小时,不得不提出问题。我希望有人能指出我正确的方向。
答案 0 :(得分:1)
请注意,Android屏幕中的原点(0,0)
位于屏幕的左上角角落。因此,当您向y axis
添加值时,对象会向下移动,当减去值时,对象会向上移动。
在Android设备中:
Origin
|
V
*-------------------------------
| ----> X axis |
| | |
| | |
| V Y-axis |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
-------------------------------
在桌面版中:
--------------------------------------------------------------
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| ^ Y axis |
| | |
| | |
| ----> X axis |
*-------------------------------------------------------------
^
|
Origin
可能的历史记录:
当电视机用作屏幕时,屏幕空间计算开始了。电视的光栅枪也从左上角角开始,所以这被认为是原点。
如需进一步参考,请参阅here