作为一种爱好和学习,无论这是否可能,我正在尝试为 Android 实现一个简单的第一人称射击游戏。不幸的是,我在处理鼠标事件处理时遇到了死胡同。
我已经有一个onGenericMotion()
-Listener,它处理MotionEvent
系统框架生成的对象。问题是,MotionEvent
由鼠标生成的对象仅包含绝对坐标,一旦光标到达屏幕的边缘或角落,它们往往会“卡住”。所以我在考虑相对鼠标坐标。虽然我发现没有任何功能MotionEvent
可以提供相对运动,但使用
adb shell su -- getevent -lt /dev/input/event3
检查它的输出显示,当一个人试图移动光标时,内核会产生不同的相对运动事件,即使它卡在屏幕的一角也是如此。因此,鉴于我的射手具有 su 访问权限,我可以获得相对运动。
现在的问题是:一点点 Google-fu 透露,在许多第一人称射击游戏中,典型的鼠标移动是通过以下方式实现的
- 使用相对鼠标坐标和
- 通过将鼠标光标重新定位在屏幕中央。
所以,这个问题真的有两个方面:
- 是否可以将鼠标光标重新定位在 Android 上的屏幕中央?和
- 如果不是,那么典型的“第一人称射击”鼠标移动是否可以仅通过使用相对鼠标移动信息来实现?