我开发了一个2D游戏,并使用OrthographicCamera和Viewport将virtaul板重新调整为实际显示大小。我添加图像到舞台并使用ClickListener检测点击。它工作正常,但是当我改变分辨率时,它的工作是不合理的(不能检测到正确的演员,我认为新的和原始的x和y的问题)。有没有什么办法解决这一问题?Libgdx:调整屏幕大小和ClickListener(libgdx)
2
A
回答
3
您需要将屏幕坐标转换为世界坐标。 你的相机可以做到这一点。你可以用两种方法,cam.project(...)
和cam.unproject(...)
或者如果你已经在使用Actors,不要自己初始化摄像机,而是使用Stage
。创建一个舞台并添加演员。舞台将为你做协调翻译。
0
我只是觉得Stage很容易使用。 如果有一些错误的,我认为你应该检查你的代码:
public Actor hit(float x, float y)
1
一旦我也遇到这个问题,但在最后,我得到了有效的解决方案,绘制使用SpriteBatch在libgdx任何东西,或舞台上。使用正交相机我们可以做到这一点。
首先选择一个最适合游戏的恒定分辨率。在这里,我采取了1280 * 720(风景)。
class ScreenTest implements Screen{
final float appWidth = 1280, screenWidth = Gdx.graphics.getWidth();
final float appHeight = 720, screenHeight = Gdx.graphics.getHeight();
OrthographicCamera camera;
SpriteBatch batch;
Stage stage;
Texture img1;
Image img2;
public ScreenTest(){
\t \t camera = new OrthographicCamera();
\t \t camera.setToOrtho(false, appWidth, appHeight);
\t \t
batch = new SpriteBatch();
\t \t batch.setProjectionMatrix(camera.combined);
\t \t \t
img1 = new Texture("your_image1.png");
\t \t img2 = new Image(new Texture("your_image2.png"));
\t \t img2.setPosition(0, 0); // drawing from (0,0)
\t
stage = new Stage(new StretchViewport(appWidth, appHeight, camera));
stage.addActor(img2);
}
@Override
\t public void render(float delta) {
\t
\t \t Gdx.gl.glClearColor(1, 0, 0, 1);
\t \t Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
\t \t batch.begin();
\t \t batch.draw(img, 0, 0);
\t \t batch.end();
\t \t stage.act();
\t \t stage.act(delta);
\t \t stage.draw();
\t \t
\t \t // Also You can get touch input according to your Screen.
\t \t
\t \t if (Gdx.input.isTouched()) {
\t \t System.out.println(" X " + Gdx.input.getX() * (appWidth/screenWidth));
\t \t System.out.println(" Y " + Gdx.input.getY() * (appHeight/screenHeight));
\t }
\t
\t }
//
:
:
//
}
运行这段代码在任何类型的分辨率将要在没有任何干扰这一决议进行调整。
相关问题
- 1. libgdx表不调整大小
- 2. 限制对象在调整大小时脱离屏幕 - LibGdx
- 3. 如何禁止在libGDX中调整屏幕大小?
- 4. Libgdx:屏幕
- 5. Libgdx:屏幕managaer
- 6. libgdx离开屏幕和屏幕周期
- 7. (Java LibGDX)如何在LibGDX中调整纹理大小?
- 8. LibGDX调整窗口字体大小图
- 9. Libgdx拟合屏幕
- 10. Libgdx屏幕混淆
- 11. Libgdx。屏幕组织
- 12. Libgdx切换屏幕
- 13. 根据libgdx中的屏幕大小设置actor大小
- 14. libgdx可调整大小/可移动的窗口与滚动屏幕
- 15. modalpopupextender调整屏幕大小?
- 16. GLUT屏幕调整大小
- 17. Android libgdx大屏幕分辨率
- 18. LibGdx RayCast box2d调试(可视屏幕)
- 19. jquerymobile和屏幕大小调整
- 20. android活动到libGdx屏幕
- 21. 在LibGdx中处理屏幕
- 22. Box2D Libgdx黑色屏幕
- 23. LibGDX - 如何清除屏幕
- 24. libGdx屏幕出现错误
- 25. 模糊LibGDX中的屏幕
- 26. Android libgdx bouncy屏幕边界
- 27. LibGDX中的拆分屏幕
- 28. Libgdx屏幕不交换
- 29. LibGdx屏幕:渲染和生命周期
- 30. 支持Android和libgdx的多个屏幕
请您提供一些代码。 –