获取LIBGDX中的光标位置

时间:2013-05-05 03:14:46

标签: java libgdx

如何在libgdx中获取光标位置并将其应用于sprite?像这样? enter image description here

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

2 个答案:

答案 0 :(得分:16)

获取光标位置

如果要轮询输入,请使用Gdx.input.getX()Gdx.input.getY()获取当前鼠标x和y坐标。 (该文档说它只与触摸相关,但代码looks like it reports raw mouse values与按钮状态无关。)

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

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

将位置应用于精灵

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

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

答案 1 :(得分:3)

我通常会将鼠标跟踪到这样的世界坐标:

    // 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来访问我游戏中的鼠标坐标(相对于场景/世界)。精灵可以非常容易地跟踪该坐标并计算其角度和方向。