gpt4 book ai didi

java - libGDX spiriteBatch.draw() 没有定位在正确的位置

转载 作者:行者123 更新时间:2023-11-29 03:52:55 25 4
gpt4 key购买 nike

这是一个示例代码,对我来说不能正常运行,我做错了什么吗?

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 的位置触摸 SpriteBatch(例如)时,它会在 X 5 处绘制纹理,但 Y 是 Gdx.graphics.getHeight() - 5px ???通过将输入 Y 向下移动,纹理向上移动......

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

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

最佳答案

屏幕坐标不一定与模型空间坐标相同。您的相机定义是什么样的? (因为它定义了模型空间到屏幕的映射。)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

关于java - libGDX spiriteBatch.draw() 没有定位在正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7881578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com