Android上的第一人称射击游戏 - 如何处理鼠标事件



作为一种爱好,为了学习是否可能,我试图为Android实施一个简单的第一人称射击游戏。不幸的是,在处理鼠标事件处理时,我遇到了一个终点。

我已经有一个onGenericMotion() -LISTENER,它处理由系统框架生成的MotionEvent对象。问题在于,由鼠标生成的MotionEvent对象仅包含 absolute 坐标,一旦光标到达屏幕的边缘或角落,就会获得"卡住"。因此,我在想相对的鼠标坐标。虽然我在MotionEvent上找不到可以提供相对运动的功能,但使用

adb shell su -- getevent -lt /dev/input/event3

并检查其输出表明,即使将光标粘在屏幕的角落时,内核也会产生不同的相对运动事件。因此,鉴于我的射击者可以进入SU,我可以获得相对运动。

现在的问题:一点点Google-Fu揭示了,在许多第一人称射击游戏中,典型的鼠标运动是通过

实现的
  1. 使用相对鼠标坐标和
  2. 重新定位

所以,这个问题确实是双重的:

  1. 是否可以将鼠标光标重新放置在Android上的屏幕中心?和
  2. 如果不是,则可以"第一人称射击者"通过仅使用相对鼠标运动信息来实现鼠标运动?

现在,如果没有根本权限,这是可能的,在Android 8.0 中,指针捕获API(2017年8月发布)。总结:

要请求指针捕获,请在视图上调用requestPoInterCapture()方法。

一旦捕获指针的请求成功,Android呼叫OnPoInterCapturechange(true),并开始传递鼠标事件。

您的专注视图可以通过执行以下任务之一来处理事件:

  1. 如果您使用的是自定义视图,请覆盖oncapturedpointerevent(MotionEvent)。

  2. 否则,注册一个OncaptrudPoInterListener。

您应用程序中的视图可以通过调用reareAsePoInterCapture()。

来释放指针捕获。

事实证明,这完全回答了我的问题。没关系。

相关内容

  • 没有找到相关文章

最新更新