Javascript 画布:基于指针的视口/包含鼠标指针
将Javascript 画布:基于指针的视口/包含鼠标指针,javascript,html,canvas,3d,viewport,Javascript,Html,Canvas,3d,Viewport,将视口基于鼠标指针的位置并能够自由移动,这似乎不是一个好方法。基本上,就像市场上的其他第一人称游戏一样 没有办法抓住老鼠 在元素内 没有办法设定位置 鼠标指针的位置 不可能全屏显示 使用,即使达到边缘,功能也会中断 也有很好的理由。想象一下恶意的人可能(而且肯定会)使用什么样的场景 也许现在考虑一些几乎只在3D环境中有用的东西还为时过早,一些还没有规范的东西 您的想法或解决方案是什么?您可以在画布中获得鼠标位置 function getCursorPosition(e) { var x;
视口基于鼠标指针的位置并能够自由移动,这似乎不是一个好方法。基本上,就像市场上的其他第一人称游戏一样
元素内
,即使达到边缘,功能也会中断画布中获得鼠标位置
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;
}
您可以在画布中获取鼠标位置
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;
}
我认为没有一个好的解决方案——至少在我们实现鼠标锁定之前是这样。无论您的解决方案多么优雅,如果您制作一个twitchy mouselook驱动的游戏,用户将在某个时候在画布区域外抽搐。即使他们没有意外点击链接,当视图停止响应鼠标时,他们的沉浸感也会被打破
对于节奏较慢的游戏,您可以:
- 使用单击并拖动来旋转。一旦用户开始在画布内拖动,您就可以使用鼠标从开始拖动的点开始的增量来确定要转多远。因为用户按下了按钮,所以他们不会意外地点击东西
- 将光标悬停在画布边缘附近以旋转,类似于RTS。这将变得更慢,但可能是最直观的,也是用户最容易意外发现的
- 使用键盘查看,就像鼠标前的FPS游戏(如Doom)
值得注意的是,Firefox中有一个用于鼠标锁定的功能。但是,不幸的是,这、鼠标隐藏或全屏都不是WebGL规范的一部分
所有这些特性都受Unity支持,因此如果您真的需要FPS控件,那么这可能是一条值得关注的途径 我认为没有一个好的解决方案——至少在我们实现鼠标锁定之前是这样。无论您的解决方案多么优雅,如果您制作一个twitchy mouselook驱动的游戏,用户将在某个时候在画布区域外抽搐。即使他们没有意外点击链接,当视图停止响应鼠标时,他们的沉浸感也会被打破
对于节奏较慢的游戏,您可以:
- 使用单击并拖动来旋转。一旦用户开始在画布内拖动,您就可以使用鼠标从开始拖动的点开始的增量来确定要转多远。因为用户按下了按钮,所以他们不会意外地点击东西
- 将光标悬停在画布边缘附近以旋转,类似于RTS。这将变得更慢,但可能是最直观的,也是用户最容易意外发现的
- 使用键盘查看,就像鼠标前的FPS游戏(如Doom)
值得注意的是,Firefox中有一个用于鼠标锁定的功能。但是,不幸的是,这、鼠标隐藏或全屏都不是WebGL规范的一部分
所有这些特性都受Unity支持,因此如果您真的需要FPS控件,那么这可能是一条值得关注的途径 是的,很明显。但这不是我要找的。我正在探索这样一种可能性,即不断地、无限期地向任一方向滚动视口。但是,一旦你将鼠标移到画布外,你就失去了这一能力。@abloodywar你不是在移动画布上绘制的内容,而不是滚动浏览器视口吗?是的,很明显。但这不是我要找的。我正在探索这样一种可能性,即不断地、无限期地向任一方向滚动视口。但是,一旦你将鼠标移到画布之外,你就失去了这一能力。@abloodywar你不是在移动画布上绘制的内容,而不是滚动浏览器视口吗?