LibGDX鼠标在世界偏差中的位置

时间:2017-06-03 19:12:56

标签: java libgdx mouse-position

我在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);

这里有一些照片(我自己添加了鼠标光标,因为我的屏幕程序没有用光标捕捉照片的选项,但保留了距离之间的比例):

img1

img2 - full resolution

正如你在 img2 中看到的那样,X位置与 img1 之间存在差异。我不能发布超过2张照片,但是当我拖动光标时在 img1 的情况下到Y轴的中心,我的纹理和光标都覆盖了自己。

我有调整大小的功能(我的类实现了屏幕)。

@Override
    public void resize(int width, int height)
    {
        gamePort.update(width, height);
        hudPort.update(width, height);
    }

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

就像Tenfour04一样,只要使用了ViewportgamePort),我们就需要在视口实例上调用.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