Java LibGDX触摸协调混淆
据我所知,libGDX坐标系默认设置,因此(0,0)位于左下角,如下图所示:Java LibGDX触摸协调混淆,java,android,libgdx,Java,Android,Libgdx,据我所知,libGDX坐标系默认设置,因此(0,0)位于左下角,如下图所示: (来源:) 有没有可能让它像JFrame一样工作,默认位置在左上角 无论如何,回到我的实际问题,android(或至少是我的手机)触摸坐标系是全屏工作的(当手机放在它的侧面时),所以默认(0,0)位置位于右上角,如下图所示: (来源:) 那么当我这么做的时候会发生什么呢: @Override public boolean touchDown(int screenX, int screenY, int pointer
(来源:) 有没有可能让它像JFrame一样工作,默认位置在左上角 无论如何,回到我的实际问题,android(或至少是我的手机)触摸坐标系是全屏工作的(当手机放在它的侧面时),所以默认(0,0)位置位于右上角,如下图所示:
(来源:) 那么当我这么做的时候会发生什么呢:
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
System.out.println("X: " + screenX + " Y: " + screenY);
this.instance.player.setLocation(screenX, screenY);
return false;
}
我只需要得到触摸屏的X,Y(基于android的全屏坐标系),然后在完全不同的libgdx坐标系上使用它
因此,如果我在右上角触摸,我的蓝色矩形将出现在左下角
有没有办法让电脑左上角的所有东西都像电脑一样工作?你需要用相机来完成这项工作。如果你不使用相机,我强烈建议你加上一个,因为它会让事情变得容易得多。只需调用
camera.setToOrTo(true)
,即可将LibGDX的坐标系切换到左上角所需的坐标系(0,0)
要使用Gdx.graphics.getWidth/height()中获得的不同的特定视口宽度和高度执行此操作,可以调用
camera.setToOrTo(true,viewportWidth,viewportHeight)
我不知道如何将其设置在左上角,但可以将输入坐标转换为libgdx坐标。
我希望这能帮助你或其他人:
int Screen_height = Gdx.graphics.getHeight(); // Your screen height
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
System.out.println("X: " + screenX + " Y: " + (Screen_height - screenY));
this.instance.player.setLocation(screenX, (Screen_height - screenY));
return false;
}
您需要在class
com.badlogic.gdx.graphics.Camera
中使用方法project(Vector3 worldCoords)
private Camera camera;
............
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
创建向量的实例,并使用输入事件处理程序的坐标对其进行初始化
Vector3 worldCoors = new Vector3(screenX, screenY, 0);
将世界空间中给定的世界坐标投影到屏幕坐标
camera.project(worldCoors);
world.hitPoint((int) worldCoors.x, (int) worldCoors.y);
OnTouch();
return true;
}
使用投影坐标
camera.project(worldCoors);
world.hitPoint((int) worldCoors.x, (int) worldCoors.y);
OnTouch();
return true;
}
是的,而且很容易。
你只需要从Y值中减去屏幕的高度。
因此:
手指位置Y=屏幕高度-您找到的Y值。有一种更简单的方法:
只需大声喊减法
Gdx.graphics.getHeight()-screenY
正如您所见,只有这行代码是必需的。创建变量fingerY并使用减法:
fingerY= Gdx.graphics.getHeight()-screenY;
因此,如果从左下角算起screenY等于10,屏幕高度等于240像素:
fingerY=240-10
然后从左下角开始fingerY=230像素,而从左上角开始fingerY=10像素。您也在使用相机绘制所有内容吗?请确保将SpriteBatch的投影矩阵设置为camera.combined。您需要随代码一起提供一些信息希望它对您有所帮助很抱歉,各位,我写了很多次同样的事情,因为Stackoverflow应用程序中出现错误,没有显示我发布的答案。。。很抱歉