FPS中的鼠标瞄准


38

我想制作一个第一人称射击游戏,并用鼠标移动相机。问题在于,当光标到达屏幕的极限时,相机将不再转动。如何保持鼠标居中并检测其移动?


3
这是一个很好的问题。
共产党鸭子

Answers:


39

在经典的Win32编程中,解决此问题的一般方法是捕获每帧鼠标的增量,然后将鼠标位置重置到屏幕中心。显然,您还希望使鼠标光标不可见,否则外观会很难看。

您可以在XNA中执行相同的操作,只是使用稍微不同的界面即可。因此,您可以执行以下操作:

  1. 启动时,使用Mouse.SetPosition将鼠标的位置设置为屏幕的中心。
  2. 同样在启动时,使鼠标不可见
  3. 在每个输入帧中,抓住当前鼠标状态
  4. 由于您知道鼠标位于中心,因此可以使用在步骤3中恢复的MouseState对象的当前X和Y值来计算这两个维度上的增量运动。您可以将这些增量提供给游戏逻辑的其余部分,例如(在您的情况下)摄像机代码。
  5. 在继续下一帧之前,将鼠标重置到屏幕中央。

编辑:另外,这是我通过Google搜索“ XNA相对鼠标输入”(这就是您要问的内容)挖出的教程。我认为它有点旧,因此某些方法的名称可能已更改,但概念仍应适用。

编辑2:意思是说“ Win32中处理此问题 ”,而不是“处理这 Win32”,相应地进行了更新。


非常感谢你。这正是我想要的!;)
BlackBear
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.