java - 渲染和触摸输入之间的 libgdx 坐标系差异

标签 java coordinates libgdx game-engine

我有一个呈现 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 的 xy 绘制您的角色。

关于java - 渲染和触摸输入之间的 libgdx 坐标系差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514152/

相关文章:

python - 20 x 20 block 数组中的坐标对列表

libgdx - 为什么在 libGdx 中 Camera.unproject() 和 Camera.project() 不是彼此相反的?

java - 在带有Scene2D的LibGDX中,按下按钮时如何连续向右行走?

java - 在运行时实现抽象方法?

java - 如何从文本文件读取到对象数组

java - 在 Java 中全局启用 CORS

比较两个数组的值

javascript - 如何检查数组是否包含数组(数字)?

java - libgdx v0.9.9 中的 opengl API Gdx.gl20 与 Gdx.gl

java - 将变量传递给 Java (android) 中的嵌套方法并返回它