我有一个要在屏幕上使用的按钮。但是,当我调整桌面窗口的大小时,触摸坐标本身就会混乱。我不知道如何解决这个问题。
所以首先我正在使用
cam = new PerspectiveCamera();
viewport = new FitViewport(screenWidth, screenHeight, cam);
Run Code Online (Sandbox Code Playgroud)
并叫
viewport.update(width, height, true);
Run Code Online (Sandbox Code Playgroud)
在我的调整大小方法中,以便我的屏幕看起来总是与其原始大小成比例。
对于我的输入
Gdx.input.setInputProcessor(new InputHandler((float) scaleX, (float) scaleY, world));
Run Code Online (Sandbox Code Playgroud)
现在调整窗口大小后,图像位于正确的位置,但触摸坐标不在。这有点难以解释,但我会尽力而为。秤工作正常。但是,由于我使用的是 Fitviewport,因此当我调用 Gdx.graphics.getHeights() 或 .getWidth() 时,它会获取整个屏幕的高度和宽度(包括仅增加一侧时的黑色区域)。因此,这使我的输入比例与整个屏幕成比例。虽然图像通过 Fitviewport 进行说明,并根据其原始大小按比例调整大小。这使我的输入位置与绘制的图像相比,按钮响应太左或向右或向上或向下。我也试过 cam.unproject。我该如何解决这个问题?
我提供了一些日志,希望可以帮助您更好地了解我的情况。
---未调整大小(原始)---
调整大小称为
调整大小 x : 480 y : 800
缩放 x : 1.0 y : 1.0
(按钮原始位置和按钮响应输入的坐标)
缩放前 X : 398 Y : 75
缩放后 X : 398 Y : 75
Gdx 输入 X : 398 Y : 75
cam unproject X : 240.26144 Y : …
所以我一直在研究和试验一些东西,但不太清楚如何删除屏幕上预先存在的 spriteBatch。
所以基本上我已经开始了
batcher.begin();
(blah blah blah)
AssetLoader.font.draw(batcher, "Hey guys", x, y);
Run Code Online (Sandbox Code Playgroud)
像这样的东西...现在我希望在屏幕上删除/删除/取消绘制这个东西...我如何在不使用 if 语句的情况下做到这一点,因为..如果我开始使用 If 语句,一切都会变得非常混乱。
非常感谢!