想法:我正在创建一个简单的WebGL脚本(使用mrdoob的精彩three.js),它允许用户在一个世界中控制相机对象。相机应该模拟传统的第一人称射击相机(例如参考军团要塞2)。也就是说,只有当鼠标移动时,照相机才会移动。使用Javascript处理相机式鼠标移动(可连续移动鼠标)
问题:使用Javascript中的,检测鼠标移动的唯一方法是如果光标本身移动。相比之下,FPS游戏并不显示光标 - 它们只是将摄像头的移动基于鼠标移动的方式。所以,你可以将鼠标移动到任何方向的鼠标垫上,并始终工作。
尽管在浏览器上,由于摄像机的移动是基于光标,所以你不能移动,但是到目前为止。当光标碰到屏幕的边缘时,用户无法再往那个方向看(例如,将鼠标移动到屏幕的左边缘,不能再向左看)。
解决方案:我想到了两种解决方案,但我都不知道如何实现。要么
鼠标移动后,javascript将其重置到屏幕中心。这样,在每次鼠标移动之后,玩家可以自由地再次向任何方向移动。与此相关的问题是,根据我所做的研究,Javascript无法控制用户鼠标的位置(可以理解,因为这对恶性网站来说是一个无法比拟的麻烦)。或者,鼠标在屏幕上“环绕”。意思是,当用户到达屏幕的一个边缘时,鼠标将继续到屏幕的另一侧。 (请参阅:http://www.digicowsoftware.com/detail?_app=Wraparound)但是,这似乎也不是JavaScript的固有功能,而只是第三方程序可以解决的问题。
那么,问题是否有意义?如果是这样,有什么办法可以实现上述解决方案,还是有另一个我失踪?
有趣的问题。永远不要低估F11,即全屏观看。 :-) –
@zourtney全屏并不能解决问题,因为:1)鼠标在屏幕边界被遮住; 2)使用多显示器设置鼠标可以离开浏览器区域。在那里查看我的回复。 – Chiguireitor
@Chiguireitor,是的,我意识到单独的全屏幕不足以提供适当的FPS。我没有意识到这是一个草案规范。谢谢你今天教我一些东西。你的回答有我的赞赏:-)我认为我们都同意,这种类型的要求只会越来越受欢迎,因为网络技术变得越来越流行 –