JavaScript游戏中的鼠标管理

8
我正在使用JavaScript、HTML5画布元素和WebGL来制作一个简单的第一人称视角3D游戏,只是为了好玩。
理想情况下,我希望使用键盘控制移动和鼠标环顾四周,就像在FPS游戏中通常所做的那样。如你所知,在浏览器中有一些限制,因为无法捕获鼠标:
- 当使用onmousemove事件时,鼠标指针到达屏幕边界后将不会检测到进一步的移动(这意味着我将无法绕圈跑,比如)。 - 看到鼠标在屏幕上移动并不是世界末日,但还是有点烦人。
据我所知,无法隐藏鼠标并在JavaScript中设置其位置。 因此,我的问题是:
如果我们不能做这些事情,我们该怎么做才能在浏览器中达到接近桌面游戏体验的鼠标操作?
我的意思是现在,使用当前的API。 不是“可以在某个标准中改变什么以使生活更轻松”。 我也意识到我可以使用键盘来观察周围,但这又回到了1995年Quake实际上是这样玩的那个年代。当然,我知道编写桌面应用程序或至少使用Flash会更容易,但我正在尝试挑战JavaScript的极限。
除了这些问题之外,你有什么建议? 任何类型的参考资料、现有游戏、疯狂的想法、黑客甚至浏览器特定的解决方案都会受到赞赏。

1
我想知道http://code.google.com/p/quake2-gwt-port/的表现如何,我实际上还没有尝试过,因为我懒得获取Chrome的开发版本,但我猜他们可能有类似的东西。 - Matti Virkkunen
2
你可以使用 body{cursor:url(path/to/blank.gif);} 隐藏光标...这在所有好的浏览器中都有效,我猜你可以通过使用 cursor:crosshair 在IE中使光标更加微妙。 - James
"quake-project" 看起来非常有趣,我会尝试看看他们在做什么。还有谢谢你提供的隐藏光标的想法! - Jakob
Quake移植版,常见问题解答,标题2:“这个鼠标视角实现太糟糕了!”看起来他们根本没有解决这个问题。 - aaaaaaaaaaaa
2个回答

3
我曾经为游戏做过一些鼠标隐藏的实验,据我回忆只有Opera不能正常工作,所以我放弃了。一个关键点是,某些浏览器将完全不可见的光标图像显示为黑色框,但只要有一个几乎看不见的像素就可以工作。你可以自由地使用鼠标隐藏部分和光标文件。http://ebusiness.hopto.org/iimdtdt/ 我也考虑过环顾四周的问题,对于上下移动,这很容易,因为你无论如何都会限制它,你所要做的就是确保该限制与鼠标移动限制同步。对于横向移动部分,我建议你尝试调整灵敏度,当鼠标接近屏幕边缘时,灵敏度应该朝着屏幕边缘的方向上升,在远离屏幕边缘的方向下降。我没有尝试过这种方法,所以无法确定它实际上能否有效,但它应该有助于即使用户向某个方向旋转得更多,也能保持鼠标在中间区域。
祝你的项目好运,听起来很令人兴奋。

嗯...我没有考虑到那种动态敏感度。我有点怀疑,因为它可能会感觉与人们习惯的不同,但绝对值得一试! - Jakob

0

使用新的指针锁定API, 现在您的希望和梦想变得更具可实现性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接