我有一台带缩放的ortographic相机,在相机的中央,我有一个纹理。
我用以下方法修正了我的世界坐标:
height = 20;
float ppu = Gdx.graphics.getHeight() / height;
width = Gdx.graphics.getWidth() / ppu;
camera = new OrthographicCamera(width, height);
当用户触摸图像时,我想要检索用户点击的颜色像素。所以在TouchDown事件中我有:
Vector3 worldCoordinate =camera.unproject(new Vector3(screenX, screenY, 0));
float newX = worldCoordinate.x;
float newY = worldCoordinate.y;
Pixmap source = img.getPixmap();
int color = source.getPixel(newX, newY);
问题是getPixel方法需要一个整数而不是float,而且相机内部纹理的大小是width = 106.6,height = 80,纹理的尺寸是3436(宽度),2409(高度)。我不知道如何将相机坐标映射到对象坐标,以获得用户点击的确切像素。
有什么建议吗? 感谢。