18

如何在 libgdx 中获取光标位置并将其应用于精灵?像这样? 在此处输入图像描述

我希望我的精灵的方向指向屏幕中光标所在的任何位置。我搜索 libgdx 示例,但找不到与此相关的任何示例。

4

2 回答 2

19

获取光标位置

如果您正在轮询输入,请使用Gdx.input.getX()Gdx.input.getY()获取当前鼠标 x 和 y 坐标。(文档说它只与触摸相关,但代码看起来像是报告原始鼠标值,而不管按钮状态如何。)

如果您使用的是,InputProcessor您可以使用以下之一:

从没有按下按钮的鼠标接收输入事件。

将位置应用于精灵

更新Vector2从当前精灵位置指向光标位置的 a。这可以是您的 Sprite 的标题。您需要旋转精灵的标题以匹配该向量。

用于Vector2.angle()计算此向量的角度,并将精灵的旋转设置为此。(这是相对于正 X 轴的,因此如果您希望它相对于 Y 轴,您可能需要添加一个常数。)

于 2013-05-05T04:34:09.133 回答
4

我通常像这样将鼠标跟踪到世界坐标中:

    // variables
    private final Vector2 mouseInWorld2D = new Vector2();
    private final Vector3 mouseInWorld3D = new Vector3();
    private final OrthographicCamera cam; 
    .
    .
    .
    //in render() code
    mouseInWorld3D.x = Gdx.input.getX();
    mouseInWorld3D.y = Gdx.input.getY();
    mouseInWorld3D.z = 0;
    cam.unproject(mouseInWorld3D);
    mouseInWorld2D.x = mouseInWorld3D.x;
    mouseInWorld2D.y = mouseInWorld3D.y;

然后,我可以使用 mouseInWorld2D 在我的游戏中访问鼠标坐标(相对于场景/世界)。精灵可以很容易地跟踪该坐标并计算其角度和方向。

于 2017-10-26T11:23:40.760 回答