获取坐标时如何忽略fitviewport(LibGdx)上的黑条?

时间:2015-02-04 20:31:03

标签: java libgdx touch coordinates viewport

我遇到了无法解决的问题。我在FitViewport风格的游戏中使用了一个舞台。

stage = new Stage(new FitViewport(SCREEN_WIDTH, SCREEN_HEIGHT));

但是当我尝试获得触地得分坐标时会出现问题,而屏幕上出现黑条(如果屏幕具有正确的比例则没有问题)。

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) 
{
    xTouch = (int) (screenX * SCREEN_WIDTH/Gdx.graphics.getWidth());
    yTouch = (int) ((SCREEN_HEIGHT) - screenY * (SCREEN_HEIGHT)/Gdx.graphics.getHeight());
}

我用这种方法得到的坐标,给出了屏幕上的位置,而不是我的游戏世界。 camera.unproject做同样的事情。 我的问题是,我怎么能忽略黑条才能在我的游戏世界中占据一席之地?我花了很多时间搜索,但没有找到任何有用的解决方案。

1 个答案:

答案 0 :(得分:4)

保持Vector2方便,因此您不必每次都创建新的

private Vector2 tmpVec2 = new Vector2();

然后使用viewport的unproject方法:

public boolean touchDown(int screenX, int screenY, int pointer, int   button) {
    stage.getViewport().unproject(tmpVec2.set(screenX, screenY));
    xTouch = tmpVec2.x;
    yTouch = tmpVec2.y;
}