我有一个呈现 PNG 图像的屏幕(BaseScreen 实现了 Screen 接口(interface))。单击屏幕时,它会将角色移动到触摸的位置(用于测试目的)。
public class DrawingSpriteScreen extends BaseScreen {
private Texture _sourceTexture = null;
float x = 0, y = 0;
@Override
public void create() {
_sourceTexture = new Texture(Gdx.files.internal("data/character.png"));
}
.
.
}
在屏幕渲染过程中,如果用户触摸了屏幕,我会获取触摸的坐标,然后使用这些坐标来渲染角色图像。
@Override
public void render(float delta) {
if (Gdx.input.justTouched()) {
x = Gdx.input.getX();
y = Gdx.input.getY();
}
super.getGame().batch.draw(_sourceTexture, x, y);
}
问题是绘制图像的坐标从左下角位置开始(如 LibGDX Wiki 中所述),触摸输入的坐标从左上角开始。所以我遇到的问题是我单击右下角,它会将图像移动到右上角。我的坐标可能是 X 675 Y 13,触摸时它会靠近屏幕顶部。但是字符显示在底部,因为坐标从左下角开始。
为什么是什么?为什么坐标系颠倒了?我是否使用了错误的对象来确定这一点?
最佳答案
为了检测碰撞,我使用了 camera.unproject(vector3)
。我将 vector3
设置为:
x = Gdx.input.getX();
y = Gdx.input.getY();
z=0;
现在我在 camera.unproject(vector3)
中传递这个 vector 。使用此 vector 的 x
和 y
绘制您的角色。
关于java - 渲染和触摸输入之间的 libgdx 坐标系差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514152/