似乎没有一种好方法可以将<canvas>
视口基于鼠标指针的位置并且能够自由移动。基本上,就像市场上的其他第一人称游戏一样。
<canvas>
元素内。<canvas>
,即使一旦达到边缘,功能也会被破坏。也有充分的理由。想象一下,恶意人员可以(并且肯定会)使用哪些可能的场景。
也许现在考虑几乎只在3D环境中使用过的东西还为时过早,这些东西还没有规范。
您的需求或解决方案是什么?
答案 0 :(得分:1)
你可以获取canvas
内的鼠标位置。
function getCursorPosition(e) {
var x;
var y;
if (e.pageX != undefined && e.pageY != undefined) {
x = e.pageX;
y = e.pageY;
}
else {
x = e.clientX + document.body.scrollLeft +
document.documentElement.scrollLeft;
y = e.clientY + document.body.scrollTop +
document.documentElement.scrollTop;
}
x -= gCanvasElement.offsetLeft;
y -= gCanvasElement.offsetTop;
var cell = new Cell(Math.floor(y/kPieceHeight),
Math.floor(x/kPieceWidth));
return cell;
}
答案 1 :(得分:0)
我认为没有一个好的解决方案 - 至少,直到我们得到鼠标锁定。无论你的解决方案多么优雅,如果你做一个令人兴奋的鼠标驱动游戏,用户将在某个时刻在画布区域外抽搐。即使他们不小心点击某个链接,当视图停止响应他们的鼠标时,他们的沉浸也会被打破。
对于节奏较慢的游戏,您可以:
值得注意的是,Firefox中有open feature request用于鼠标锁定。但是,不幸的是,这个,鼠标隐藏或全屏都不是WebGL规范的一部分。
Unity支持所有这些功能,因此,如果您真的需要FPS控件,这可能是一条路径。