我正在研究3D游戏,其中光标(十字准线)位于屏幕的中心,并且当您移动鼠标时,对象会根据鼠标旋转(就像fps游戏中一样)。
我已经用自己的十字准线替换了默认十字准线,但是在屏幕上居中时遇到了麻烦。我已经使用以下方法确定了光标放置的中间位置:
cursorPosition=new Vector2((Gdx.graphics.getWidth()-cursorSize.x)/2,(Gdx.graphics.getHeight()-cursorSize.y)/2);
然后,每次使用此方法调用render()方法时,我都会应用该位置:
Gdx.input.setCursorPosition((int)cursorPosition.x,(int)cursorPosition.y);
它没有按我预期的那样工作。如果我快速移动鼠标,光标的位置仍然会移动,然后重置到屏幕中间。
我还尝试将光标catch设置为true,但这只会使光标不可见。
Gdx.input.setCursorCatched(true);
我希望始终将鼠标光标放置在屏幕中间,然后根据鼠标移动3d移动对象。
答案 0 :(得分:1)
使用Gdx.input.setCursorCatched(true)
,但是在捕获鼠标时将鼠标的十字线绘制到屏幕的中心,并在取消捕获时将其删除。
根据游戏的设置方式,十字准线应该是渲染的最后一件事:
public void render() {
...
spriteBatch.render(cursor, Gdx.graphics.getWidth()-cursorSize.x)/2,(Gdx.graphics.getHeight()-cursorSize.y)/2);
spriteBatch.end();
}