【问题标题】:libGDX spiriteBatch.draw() not positioning at the right placelibGDX spiriteBatch.draw() 没有定位在正确的位置
【发布时间】:2011-10-24 20:28:27
【问题描述】:

这是一个无法正常运行的示例代码,我做错了吗?

textureCharacter = new Texture(Gdx.files.internal("data/character1.png")); 

if (Gdx.input.isTouched()) {
    spriteBatch.draw(textureCharacter, Gdx.input.getX(), Gdx.input.getY());
}

当我在 X=5 和 Y=5 的位置(例如)触摸 SpiriteBatch 时,它会在 X 5 处绘制纹理,但 Y 是 Gdx.graphics.getHeight() - 5px ???通过将输入 Y 向下移动,纹理向上移动...

Gdx.input.getX() 和 Gdx.input.getY() 返回值:X=5, Y=5

我想要做的只是将纹理移动到我正在触摸/移动的输入位置。

【问题讨论】:

    标签: java android libgdx


    【解决方案1】:

    屏幕坐标不一定与模型空间坐标相同。你的相机定义是什么样的? (因为它定义了模型空间到屏幕的映射。)Gdx.intput.getX() 调用返回屏幕空间中的一个点。

    Y 轴(默认)在屏幕和 GL 空间中指向相反的方向。 (在屏幕坐标中从屏幕顶部向下增长,在 GL 坐标中向屏幕顶部增长)。您可以修复您的相机以匹配屏幕坐标或将您的触摸坐标映射到 GL 坐标。

    请参阅对camera.unproject() 的调用: https://code.google.com/p/libgdx/source/browse/trunk/tests/gdx-tests/src/com/badlogic/gdx/tests/examples/MoveSpriteExample.java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 2013-07-21
      • 1970-01-01
      • 2020-09-11
      相关资源
      最近更新 更多