获取LIBGDX中的光标位置
如何在libgdx中获取光标位置并将其应用于sprite? 像这样?
我希望我的精灵在我的光标位于屏幕的任何地方指向方向。我搜索libgdx示例,但我找不到任何与此相关的示例。
获取光标位置
如果要轮询输入,请使用Gdx.input.getX()
和Gdx.input.getY()
来获取当前鼠标x和y坐标。 (该文档说它仅与触摸相关,但代码看起来像报告原始鼠标值而不管按钮状态。)
如果您使用的是InputProcessor
,则可以使用以下方法之一:
- touchMoved回调 (在较旧的libGDX版本上)
- mouseMoved回调 (在较新的libGDX版本上)
从没有按下按钮的鼠标接收输入事件。
将位置应用于精灵
更新从当前精灵位置指向光标位置的Vector2
。 这可以是你的精灵的标题。 你需要旋转精灵的标题来匹配这个向量。
使用Vector2.angle()
计算此向量的角度,并将精灵的旋转设置为此值。 (这相对于正X轴,因此如果您想要相对于Y轴,可能需要添加常量。)
我通常会将鼠标跟踪到这样的世界坐标:
// 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来访问我游戏中的鼠标坐标(相对于场景/世界)。 精灵可以非常容易地跟踪该坐标并计算其角度和方向。