gpt4 book ai didi

java - libGDX X 和 Y 鼠标输入

转载 作者:行者123 更新时间:2023-12-01 21:48:02 24 4
gpt4 key购买 nike

我有一个 libGDX 代码,但我不明白为什么它不起作用。我的想法如下:我创建一个带有纹理的 Sprite ,如果我单击这个 Sprite ,就会发生一些事情。到目前为止,一切都很好。

我在位置上使用以下代码创建 Sprite :
X = 0.1f;Y = 0.5f;

这很好用...

            Sprite spr = new Sprite(texture);

// Define sprite size to be 1m x 1m in game world
spr.setSize(1, 1);

// Set origin to sprite's center
spr.setOrigin(spr.getWidth() / 2.0f, spr.getHeight() / 2.0f);

// Calculate random position for sprite
float randomX = 0.1f;
float randomY = 0.5f;
spr.setPosition(randomX, randomY);

// Put new sprite into array
testSprites[i] = spr;

现在我确实想在单击时获取鼠标的 X 和 Y 位置。但是当我用 Systemout 尝试时,我得到以下坐标:X 输入:748X Sprite 位置:0.1

Sprite 位置是正确的,但 X 输入 (Gdx.input.getX) 也应该在 0.1 左右,但相差甚远。有什么我没有考虑到的吗?

        if (Gdx.input.isButtonPressed(Buttons.LEFT))
System.out.println("X Input: "+ Gdx.input.getX());
System.out.println("X Sprite Position: "+testSprites[1].getX());

最佳答案

看看this article 。您正在将触摸/鼠标坐标(像素)与世界坐标(例如米)进行比较,而不进行转换。您可以使用 CameraViewportunproject 方法将输入坐标转换为世界坐标。您没有提供足够的信息来查看您正在使用的设备,但假设您使用的是相机,那么您可以执行以下操作。

Vector3 mousePos = new Vector3();
camera.unproject(mousePos.set(Gdx.input.getX(), Gdx.input.getY(), 0));
System.out.println("X Input: "+ mousePos.x);

当然,您不应该在频繁调用的代码中使用new关键字,因此您最好将mousePos变量移动到类成员中。

关于java - libGDX X 和 Y 鼠标输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682059/

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