【问题标题】:How to ignore black bars on fitviewport(LibGdx) when getting coordinates?获取坐标时如何忽略fitviewport(LibGdx)上的黑条?
【发布时间】:2015-04-04 12:49:49
【问题描述】:

我有一个无法解决的问题。我在游戏中使用 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 做同样的事情。 我的问题是,我怎样才能忽略黑条来获得我的游戏世界的位置?我花了很多时间搜索,但没有找到任何有用的解决方案。

【问题讨论】:

    标签: java libgdx touch coordinates viewport


    【解决方案1】:

    随身携带一个 Vector2,这样您就不必每次都创建新的:

    private Vector2 tmpVec2 = new Vector2();
    

    然后使用视口的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;
    }
    

    【讨论】:

    猜你喜欢
    • 2016-03-11
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    相关资源
    最近更新 更多