我在LibGDX游戏世界中的鼠标位置有些问题。 我的鼠标位置在世界和实际位置之间存在一些差异。 为了获得我的鼠标位置我使用:
Vector3 mousePos = gamecam.unproject(new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0));
speechBaloon.setPosition(mousePos.x, mousePos.y); //texture that follows cursor
其中:
public static final int WIDTH = 1920;
public static final int HEIGHT = 1080;
gamecam = new OrthographicCamera();
gamePort = new FitViewport(MyGame.WIDTH, MyGame.HEIGHT, gamecam);
gamecam.setToOrtho(false, MyGame.WIDTH, MyGame.HEIGHT);
这里有一些照片(我自己添加了鼠标光标,因为我的屏幕程序没有用光标捕捉照片的选项,但保留了距离之间的比例):
正如你在 img2 中看到的那样,X位置与 img1 之间存在差异。我不能发布超过2张照片,但是当我拖动光标时在 img1 的情况下到Y轴的中心,我的纹理和光标都覆盖了自己。
我有调整大小的功能(我的类实现了屏幕)。
@Override
public void resize(int width, int height)
{
gamePort.update(width, height);
hudPort.update(width, height);
}
提前感谢您的帮助!
答案 0 :(得分:0)
就像Tenfour04一样,只要使用了Viewport(gamePort
),我们就需要在视口实例上调用.unproject()。
摘自LibGDX Camera的文档:
将屏幕坐标中给定的点转换为世界的功能 空间。 ... 假定视口跨越整个屏幕,并且从 Graphics.getWidth()和Graphics.getHeight()。
最终结果:
Vector3 mousePos = gamePort.unproject(new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0));
speechBaloon.setPosition(mousePos.x, mousePos.y); //texture that follows cursor