当前位置: 首页 > 知识库问答 >
问题:

Libgdx上的游标输入返回“不正确”

裴鸿熙
2023-03-14

我目前正在为一个即将开始的项目制作自己的关卡创建器(地图)。一切都很好,除了我在添加放大和缩小选项时遇到了一个问题。我有一个处理所有输入和渲染的类,因为我才刚刚开始。

LevelEditorController extends InputAdapter implements ApplicationListener

如您所见,此类扩展了InputAdapter并实现了Application ationListener。

cameraHelper = new CameraHelper();
camera = new OrthographicCamera(Constants.VIEWPORT_WIDTH,
        Constants.VIEWPORT_HEIGHT);
camera.position.set(0f, Constants.VIEWPORT_HEIGHT / 2, 1f);
camera.update();
cameraHelper.setPosition(camera.position.x, camera.position.y,
                camera.position.z);

照相机是正字法照相机。cameraHelper是我做的一个助手类。我把摄像机的位置设在这里。cameraHelper.setPosition(...)只是在我的CameraHelper类中设置了一个顶点3。

batch.setProjectionMatrix(camera.combined);
shapeRenderer.setProjectionMatrix(camera.combined);

上面,在重写的渲染方法中,我设置了我的批处理和shapeRenader的项目矩阵。

我相信所有这些都是可行的,因为所有内容都显示正确,只有光标位置关闭。

@Override
        public boolean mouseMoved(int x, int y) {
            for (int i = 0; i < boundingBoxes.size; i++) {
                if (boundingBoxes.get(i).toRectangle()
                        .contains(x, Gdx.graphics.getHeight() - y)
                        && !boundingBoxes.get(i).isActive()) {
                    boundingBoxes.get(i).setRenderFull(true);
                } else {
                    boundingBoxes.get(i).setRenderFull(false);
                }
            }
            shapeRenderer.begin(ShapeType.Filled);
            shapeRenderer.setColor(0.53f, 0.62f, 0.32f, 1f);
            shapeRenderer.circle(x, Gdx.graphics.getHeight() - y, 20);
            shapeRenderer.end();
            return false;
        }

任何帮助都将不胜感激。谢谢!:)

共有1个答案

贺经纶
2023-03-14

您必须将输入点取消投影到相机使用的坐标系中。

touch Moved(int x, int y)将简单地包含屏幕上的像素位置。通过使用camera.unproject(Vector3窗口),您将在世界/场景坐标中获得这些触摸坐标。

这样,触摸位置应该匹配。希望它能帮助... :)

 类似资料:
  • 我正在做一个采矿游戏,如果你点击某个地方,你会删除那里的方块。现在所有的块都是正方形,只有当我的2d布尔数组中的点为真时才绘制。所以我试着把这个位置设置为false,只要你点击这里,就是我的输入处理器的触地方法 我也在将相机转换为我的玩家位置。grid.manipulate网格接受一个x和一个y并将其设置为false。我的玩家位于网格坐标中的(10,126),当我点击他旁边时,它显示我正在点击(3

  • 我是PHP库phpQuery内容解析器的忠实粉丝(因为它很像jQuery,同时使用PHP DOMDocument提取标记),但我注意到快速关闭事件 和< code>phpQuery中。 我编写了一个简单的类PhpContentDocument来转储一个简单的html文档。 结果如你所料... 但是当使用saveHTML调用文档时 它返回... 我遇到的主要问题是,当我在元素上使用简单XML元素时(

  • 所以我坐在这里,拿着一部800像素的手机..并且< code > gdx . graphics . getwidth()也应该返回800.. 但是当我从获得坐标时,当我一直向左触摸屏幕时,我得到的最高数字是780左右。和右侧约20。 所以我的坐标都错了,所以我所有的按钮和东西都不能正常工作,等等。 知道发生了什么吗?

  • 问题内容: 起初我想注意到英语不是我的母语,无论我希望我们不会误会 我在Android上编写了简单的应用程序,发现了一个问题,也解决了该问题,但是无论如何,我都想了解为什么会这样。 我创建了一个sql表: 并以这种方式将数据放入其中: 现在..一切正常,我使用此应用程序进行了验证,可以存储的值正确。 不过,当我尝试使用1得到错误的值2)获得日期值时,它的负数(例如-1004124) 因此,我尝试用

  • 这三个函数的返回类型提示有什么不同吗? 他们都应该有< code>- 提问的动机是这个问题,这个很好的答案,以及我正在学习类型提示的事实。

  • 在RoboMongo(0.9.0-RC09)中运行以下mongo查询会给出正确的文档数量(使用游标计数函数),而迭代所有文档只会返回一小部分文档: 我们是否需要专门配置查询以返回所有文档?