如何缩放绝对坐标libgdx

时间:2014-05-29 20:46:18

标签: android libgdx

我正在使用libgdx来创建一个Android游戏,其中玩家可以触摸屏幕的特定部分以在道路上左右移动汽车。我最初制作的游戏的高度和宽度分别为480×800,但当设备分辨率或多或少时,我所做的更多,触摸坐标不在同一个地方。如果是基于正在播放游戏的设备缩放我的坐标的方法。我用来计算接触点的函数如下:

if (Gdx.input.isTouched()) {

        if (inBounds(touchedX, touchedY,0, 585, 120, 140)) {
            taxi.moveLeft();
        }

        else if (inBounds(touchedX, touchedY, 360, 585, 120, 140)) {
            taxi.moveRight();
        }

        else if (inBounds(touchedX, touchedY, 0, 0, 120, 140)) {
            pause();
        }

    }

    if (!Gdx.input.isTouched()) {

        if (inBounds(touchedX, touchedY, 0, 600, 71, 111)) {
            taxi.stopLeft();

        }

        if (inBounds(touchedX, touchedY, 415, 600, 71, 111)) {
            taxi.stopRight();

        }
    }

如果设备大于或小于480 x 800,如何使inbounds()中的坐标相应缩放。

1 个答案:

答案 0 :(得分:0)

你可以用camera.unproject做到这一点。

在触摸事件中执行此操作

Vector3 vect=new Vector3(touchedX,touchedY,0);
camera.unproject(vect); // camera is your game camera
float newX=vect.x,newY=vect.y;
if (inBounds(newX, newY, 0, 600, 71, 111)) {
            taxi.stopLeft();

        }

这将完成这项工作。