在android设备上获得正确的触地坐标

时间:2014-08-28 17:22:22

标签: android libgdx coordinates projection orthographic

我正在编写LIBGX中的按钮。它在桌面上工作得很好,但是当我在Android上启动它时,我必须在不同的地方触摸才能触发它(我使用的是真正的Android设备,而不是AVD)以下是描述它的图片:

enter image description here

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,现实世界等)非常混乱。我会继续挖掘,这需要几个小时,不得不提出问题。我希望有人能指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

请注意,Android屏幕中的原点(0,0)位于屏幕的左上角角落。因此,当您向y axis添加值时,对象会向下移动,当减去值时,对象会向上移动。

在Android设备中:

 Origin
 |
 V
 *-------------------------------
 | ----> X axis                  |
 | |                             |
 | |                             |
 | V Y-axis                      |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
 |                               |
  -------------------------------

在桌面版中:

 --------------------------------------------------------------
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 |                                                             |
 | ^ Y axis                                                    |
 | |                                                           |
 | |                                                           |
 | ----> X axis                                                |
 *-------------------------------------------------------------
 ^
 | 
 Origin   

可能的历史记录:

当电视机用作屏幕时,屏幕空间计算开始了。电视的光栅枪也从左上角角开始,所以这被认为是原点。

如需进一步参考,请参阅here