1. 首页
  2. three.js

three.js消除对鼠标移动的限制

我正试图用鼠标来旋转我的手指视图数学很简单:Y移动产生纬度(X轴)的变化,X移动产生经度(Y轴)的变化。我已经创建了一个侦听器来检测鼠标移动。n我没有移动相机直接。相反, 我正在围绕中心移动一个物体,并用相机跟踪它,所以结果应该是一样的。n我遇到的问题是,X的移动似乎是有限的。在我撞到“墙”之前,我只能在任一方向执行一些旋转。我假设发生的情况是鼠标在页面的整个宽度上移动,当它撞到末端时,它会停止。n有没有办法避免这种限制?n如果我能使用three.js控制例行程序,那将是太好了,不过,我想做两件不同的事情:(1)如果没有按下鼠标按钮,我想做上面提到的事情;(2)如果按下鼠标按钮,我想切换到只围绕中心旋转相机。n谢谢。菲尔•克劳瑟:n我有创建了一个检测鼠标移动的侦听器。n请在此处共享您的代码好吗?最好使用Codepen或codesandbox等工具将其作为一个实例进行共享。n您可以在此处找到工作模板:请在发布问题之前阅读此内容问题使用此类别处理与此相关的任何问题three.js. 在此发布之前,请使用搜索功能检查您的问题是否已得到回答。关于这个问题,也有很多答案three.js在Stackoverflow上,请通过three.js还有一些问题。如果你认为你发现了一个bug,你可以在three.jsGithub上的问题跟踪器,但如果您不确定,请在此处发布您的问题,我们将帮助您确认它是否是错误。A.n谢谢你的回复。我可以做一个简单的例子。n同时,一个简单的解释也可以救命,救命典型的旋转是通过按下鼠标按钮并移动鼠标来激活的指针.As只要按下按钮,鼠标指针位置的变化用于计算某些程序变量(例如向右旋转对象)。假设您已将鼠标指针一直移动到屏幕边缘(例如向右移动),并且希望继续旋转对象(向右)。在这种情况下,您只需松开鼠标按钮并将鼠标(指针)移回起始位置(例如,一直向左)。这不会影响程序变量,因为只有在按下按钮时,该变量才会更改按。这个是“自由”移动。n在我的情况下,我没有“自由”移动的选项,因为我正在使用鼠标“双重任务”按钮。当鼠标按钮按下时,鼠标移动正在旋转摄像机,什么时候鼠标按钮向上,鼠标移动正在旋转反对结果,当鼠标指针碰到屏幕边缘时,相机或物体不能再旋转了。n所以我需要的是某种方法来消除鼠标指针的屏幕限制运动,为了例子,找到一种读取原始鼠标设备更改的方法会很有帮助直接的,或者如果我能继续读取鼠标的变化,并在每次更改后将鼠标光标重置回屏幕中心读。作为据我所知,两者都不是一个选项。n我在网上做了更多的研究,其中一个选项似乎使用了一种叫做“指针锁”的东西,鼠标的位置锁定在鼠标的中心屏幕。但是,据我所知,这在中不可用three.js而且有点实验性。n谢谢。nI说错了,现在我知道我正在寻找的一个术语叫做“指针锁”,我搜索并找到了它pointerlock.js这是three.js控件库。n所以我将探索该选项。n像这样吗?nhttps://threejs.org/examples/#misc_controls_pointerlock90n我想他指的是设置指针捕捉和释放指针捕捉,如果鼠标被捕获,退出浏览器(按下鼠标)不会中断运动。我还注意到控件中的这种行为,并认为这是一个错误,因为交互实际上中断了(如果鼠标按钮在离开浏览器时被提起,鼠标再次进入,控件会认为它仍然被按下,这会导致奇怪的行为)。n但听起来好像它们能够捕获到?这是一种选择吗?n是的,就是这样。n现在,我只需要弄清楚它是否也允许我使用鼠标按钮来更改受影响的变量,例如,鼠标向上,我旋转(确实如此);鼠标向下,我环绕该对象。n这是我正在使用的程序:Skye Fly 22n您可以使用鼠标(无向下按钮)移动蓝色目标指示器,该指示器将“引导”目标飞机,你呢也可以使用鼠标(按下按钮)围绕飞机圣转向部分需要进行一些调整(自动转向引起了一些振动)。n说明问题的最简单方法是按住鼠标按钮,并在其中一个方向上尽可能地围绕飞机旋转方向,它不需要很长时间就可以到达无法进一步旋转的点。n指针锁定似乎可以消除这种情况限制并使用鼠标(无向下按钮)操纵飞机。我希望我的PointerLock也允许我使用鼠标(向下按钮)绕飞机旋转n Removing Limitations on Mouse Movementn

three.js消除对鼠标移动的限制 为WP2原创文章,链接:https://www.wp2.cn/three-js/three-js%e6%b6%88%e9%99%a4%e5%af%b9%e9%bc%a0%e6%a0%87%e7%a7%bb%e5%8a%a8%e7%9a%84%e9%99%90%e5%88%b6/