我正在使用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()中的坐标相应缩放。
答案 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();
}
这将完成这项工作。