问题标签 [pointerlock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
171 浏览

javascript - 如何在 mousedown 时保持鼠标指针位置

鼠标指针位置是否可以在mousedown时冻结,我觉得这会限制抓取和鼠标离开可抓取区域的问题,我在许多其他游戏等中多次看到此功能希望阅读此内容的你理解我建议的功能类型...

这是我的代码。如果有人修复了鼠标冻结,请随时更新它...

0 投票
0 回答
615 浏览

javascript - 三个 js 指针锁定控件旋转不以我的相机位置为中心

我已经使用指针锁定在三个 js 中向我的相机添加了第一人称控件,这是我创建的 FPControls.js 文件中的代码

这是我在 init 函数中的主文件中的代码

一切正常,除了相机的旋转似乎没有以我的实际位置为中心而且看起来不正确我做错了什么,有人可以帮助我吗

0 投票
0 回答
1671 浏览

javascript - JavaScript MouseEvent.movementX 和 motionY 大尖峰

使用 Chrome 锁定指针后,如果您移动鼠标,MouseEvent.movementX 和 MouseEvent.movementY 有时会返回一个非常大的数字,看起来大约是窗口大小的一半。

这是一个最小的代码示例:

我的预感是,当您调用 requestPointerLock() 时,它实际上并没有将鼠标锁定在一个位置,而只是隐藏了它。当鼠标离开窗口时,它会将鼠标弹回中心,这会导致变量出现较大的峰值。

大尖峰的原因是什么,我该如何解决?

0 投票
3 回答
196 浏览

javascript - event.movement 返回奇数值

我一直在玩 webGL,我已经达到了可以制作带有非常可怜的图形的小型 3D 游戏的地步(到目前为止,它更像是概念/功能的证明)。对于3D体验,任意方向无限移动鼠标,旋转第一人称摄像头,效果非常好。Pointerlock 允许我锁定和隐藏光标位置,这非常有帮助,但是我需要找到另一种跟踪鼠标移动的方法。在我的研究中,event.movementXevent.movementY似乎是标准,但我经常在鼠标移动的相反方向上出现大的移动(通常在 500 到 583 之间)。我用许多鼠标和触控板对此进行了测试,并遇到了同样的现象。

这是我的相关事件侦听器:

以及相关的渲染循环代码:

但是我的控制台出现了这样的情况:

控制台捕获

我添加了更改条件xMovement以防止摄像机角度发生大幅转动,但我仍然留下非常烦人的运动。有什么想法可以修补或替换为更无缝的界面移动吗?

0 投票
1 回答
60 浏览

javascript - 在 Jupyter 笔记本中激活 pointerLock

我目前正在尝试在Jupyter 笔记本中使用Pointer Lock API 。基本上我想在不受屏幕尺寸限制的情况下记录一堆触控板移动,然后将其传递给 Python 对其进行一些计算。在接下来的内容中,我将只讨论获取指针锁。

<div>这是我的方法:我在当前笔记本上创建一个新的,这样我就可以用它来锁定指针,让我们调用它canvas,然后调用canvas.requestPointerLock();. 很简单的东西。

我担心的是,相同的代码(如下)在Javascript 测试器中可以正常工作,但在 Jupyter 单元格%%javascript模式下不能正常工作。

使用 Javascript 测试器,我的控制台打印:

Document has pointer lock capabilities. New canvas. pointerLockElement: [object HTMLDivElement] The pointer lock status is now locked onto canvas

然后光标被锁定并消失。然后我按 Escape,控制台记录:

pointerLockElement: undefined The pointer lock status is now unlocked

但是,当我在 Jupyter 单元中尝试完全相同的代码时,我得到:

Document has pointer lock capabilities. New canvas. Error when attempting to lock cursor...

并且光标永远不会被锁定。

似乎 Jupyter 笔记本中的某些东西阻止了我获得锁,但我无法确定,因为pointerlockerror没有任何解释。有什么想法吗?

我正在使用 Chrome (64.0.3282.140)、Mac OS X 10.11.6。

非常感谢!

- 马蒂耶夫

0 投票
2 回答
185 浏览

three.js - 当使用 PointerLockControls 的位置不是 (0,0,0) 时,相机以错误的方式旋转

三.js r91

我在第 173 行稍微更改了 PointerLockControls 示例

当我移动鼠标环顾四周时,您会看到相机的旋转不正确——它不是围绕自身旋转,而是在其他地方旋转。

你可以看到我已经添加controls.getObject().position.set(100, 0, 0);,试图解决这个问题和这个问题。但它不起作用。

有关完整示例,请参阅此 codepen 帖子

移动鼠标时如何使相机正常旋转?

0 投票
1 回答
374 浏览

typescript - 无法删除 EventListener

我有一个 TypeScript 类,它看起来像这样:

基本上,代码应该_handleMouseMovement在鼠标锁定到画布后注册事件侦听器,并在锁定被移除后将其移除。

锁定确实有效。它激活了位置记录,_handleMouseMovement但是一旦我通过删除锁定,ESC我确实收到消息Unlocked mouse pointer from canvas.所以_handleMouseMovement没有删除并且位置记录继续。

我认为我确实注意不要注册匿名函数,这可能是导致此类问题的原因。所以我想知道还有什么可能导致这种行为。

0 投票
1 回答
147 浏览

javascript - 使用 PointerLockControls 时禁用转义选项

我想知道在键盘上按 Escape 时是否可以禁用 ESCAPE 选项(使用 PointerLockControls 和 ThreeJS)。

我想在我的项目中将此密钥用于另一个目的!

提前感谢您的帮助!

0 投票
1 回答
646 浏览

javascript - How to get mouseMovement when cursor is locked?

While looking for way to lock the cursor in processing/p5.js/javascript I realized that even once I figured that out I would not be able to detect mouse movement. How do people do it in typical fps games?

0 投票
1 回答
107 浏览

three.js - Three.js 指针锁定控件在天穹上创建洞

我的问题是,当我使用指针锁定控件在场景周围鼠标时,我的天空穹顶中会出现一个白色圆圈并随鼠标移动。这就是圆圈的样子。我的天空穹顶的代码是

我用轨道控制测试了场景,没有出现圆圈,所以我认为这是一个指针锁定问题。有谁知道是什么原因造成的?