浏览器的话可以用requestPointerLock来获得无限距离的鼠标移动, 相当于光标锁定在固定位置, 但是鼠标的移动会导致movementX/movementY的变化.
下面代码我在谷歌浏览器console测试了下是可以的:
// 触发鼠标锁定
cc.game.canvas.addEventListener('click', function () {
if(document.pointerLockElement) {
document.exitPointerLock();
} else {
cc.game.canvas.requestPointerLock();
}
});
function onMouseMove(e) {
let node = cc.Canvas.instance.node.children[0];
node.x -= e.movementX;
node.y += e.movementY;
}
// 检测鼠标锁定状态变化
document.addEventListener('pointerlockchange', function () {
console.log('pointerlockchange: ', document.pointerLockElement)
if (document.pointerLockElement) {
cc.game.canvas.addEventListener("mousemove", onMouseMove, false);
} else {
cc.game.canvas.removeEventListener("mousemove", onMouseMove, false);
}
}, false);