Android libgdx:使用纹理时的其他协调系统
我有点困惑。我是第一次使用libgdx,坐标系有一些问题。当我创建纹理并想要设置位置时,我会执行以下操作:Android libgdx:使用纹理时的其他协调系统,android,libgdx,touch,textures,coordinate-systems,Android,Libgdx,Touch,Textures,Coordinate Systems,我有点困惑。我是第一次使用libgdx,坐标系有一些问题。当我创建纹理并想要设置位置时,我会执行以下操作: texture = new Texture("myGraphic.png", 0, 0); 我的照片会放在左下角 但当我尝试接触到以下位置时: if(Gdx.input.isTouched()) { Vector3 tmp = new Vector3(Gdx.input.getX(),Gdx.input.getY(),0); System.ou
texture = new Texture("myGraphic.png", 0, 0);
我的照片会放在左下角
但当我尝试接触到以下位置时:
if(Gdx.input.isTouched())
{
Vector3 tmp = new Vector3(Gdx.input.getX(),Gdx.input.getY(),0);
System.out.println("Coord:" + " + " + tmp.x + " + " + tmp.y);
}
我发现(0,0)在左上角。
所以我在输出之前尝试了camera.unproject(tmp),但之后只会得到-1到1之间的值。
如何为所有元素获得相同的坐标系 在Libgdx坐标系中,触摸是
y-down
,但对于屏幕或图像是y-up
看看LibGDX
如果可以使用摄像头,则通过camera.setToOrtho设置y轴指向上(false)编码>并通过camera.unproject(vector3)获取世界点代码>方法
public class TouchSystem extends ApplicationAdapter {
SpriteBatch batch;
Texture texture;
Vector3 vector3;
OrthographicCamera camera;
@Override
public void create() {
batch=new SpriteBatch();
texture=new Texture("badlogic.jpg");
vector3=new Vector3();
camera=new OrthographicCamera();
camera.setToOrtho(false); // this will set screen resolution as viewport
}
@Override
public void render() {
Gdx.gl.glClearColor(0,0,0,1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(texture,0,0);
batch.end();
if(Gdx.input.justTouched()) {
vector3.set(Gdx.input.getX(),Gdx.input.getY(),0);
camera.unproject(vector3);
System.out.println("Coord:" + " + " + vector3.x + " + " + vector3.y);
}
}
@Override
public void dispose() {
texture.dispose();
batch.dispose();
}
}
显示你的代码你如何使用相机?这是工作!非常感谢你。另一个简短的问题:我必须使用我的MainGame类中的同一个摄像头,还是我可以在其他类中创建一个新摄像头(例如新屏幕)?摄像头不是很重的对象,因此您可以在其他屏幕上创建不同的摄像头。