无限移动鼠标

3

我正在使用 Babylon 制作一款游戏,但是摄像机遇到了些许问题。

基本上,我希望(就像所有FPS游戏一样)摄像机可以无限移动,并且当鼠标到达页面边缘时不会停止。我尝试了以下代码:

window.mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
window.mouse.y = -( event.clientY / window.innerHeight ) * 2 + 1;
if(mouse.x>0 || mouse.x<0){
    scene.cameras[0].rotation = scene.cameras[0].rotation.add( new BABYLON.Vector3(0,(mouse.x)/100,0));
    window.mouse.x = 0;
}
else if(mouse.y>0 || mouse.y<0){
    scene.cameras[0].rotation = scene.cameras[0].rotation.add( new BABYLON.Vector3(0,(mouse.y)/100,0));
    window.mouse.y = 0;
}

但是它的效果并不好。因为光标仍然停留在左侧或右侧。

我的问题是:

是否有可能将光标固定在页面中心,只获取鼠标移动事件,这样我就只需要关注这个移动事件了?

1个回答

6
你不能移动我的光标(想象一下这会让互联网变得多么烦人:)),但对于游戏,您应该能够利用全屏模式。请注意,这在目前仍处于试验阶段。

指针锁定(以前称为鼠标锁定)提供了基于鼠标随时间移动的输入方法(即增量),而不仅仅是鼠标光标的绝对位置。它使您可以访问原始鼠标移动、将鼠标事件的目标锁定到单个元素、消除了单个方向上鼠标移动的限制,并将光标从视图中移除。

此 API 对于需要大量鼠标输入来控制移动、旋转对象和更改条目的应用程序非常有用。它尤其对高度视觉化的应用程序特别重要,例如那些使用第一人称透视图以及 3D 视图和建模的应用。


谢谢您提供的链接 :) 我认为由于可能存在滥用行为,这并非不可能发生 ^.^ - Crocsx

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