Javascript 将玩家移向鼠标方向?
我正在寻找一行简单的代码或API,如果它像那样简单的话 我正在使用BabylonJS制作一个在线游戏,我遇到了一个问题。我在文档中找不到任何支持我的问题的东西。我正在使用Javascript 将玩家移向鼠标方向?,javascript,babylonjs,Javascript,Babylonjs,我正在寻找一行简单的代码或API,如果它像那样简单的话 我正在使用BabylonJS制作一个在线游戏,我遇到了一个问题。我在文档中找不到任何支持我的问题的东西。我正在使用 canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock; canvas.requestPointerLock(); 要锁定鼠标,通常必须单击并拖动鼠标。我还将此动作脚本用于基本动作: function
canvas.requestPointerLock = canvas.requestPointerLock || canvas.mozRequestPointerLock;
canvas.requestPointerLock();
要锁定鼠标,通常必须单击并拖动鼠标。我还将此动作脚本用于基本动作:
function KEY_DOWN(event)
{
if (event.keyCode == 87)
{
player.position.z -= 0.5;
}
else if (event.keyCode == 65)
{
player.position.x += 0.5;
}
else if (event.keyCode == 83)
{
player.position.z += 0.5;
}
else if (event.keyCode == 68)
{
player.position.x -= 0.5;
}
}
不幸的是,这仅在轴上进行变换。有没有办法确定我的鼠标在看什么,朝着那个点移动,而不仅仅是在一个固定的轴上移动?我似乎找不到任何有我需要的确切方法的东西。谢谢 我不知道任何API,但如果我正确理解您的问题,它应该不会那么糟糕。在点被锁定后,您需要钩住mousemove事件,而不是像这里所示的简单处理:您需要使用该处理程序中的键对每个可能的移动向量进行向量计算。实际上,您可以基于鼠标增量计算pointerlockchange处理程序中每个按键对应的x、y、z增量。可能没有听起来那么糟糕,因为您的鼠标增量一次最多只影响2个轴。为了进一步说明我的意思,我在这里放了一个我认为会有帮助的示例。不幸的是,我不能使用jsfiddle,因为它的iframe阻止指针锁。这里是我的示例,它将指针锁定的x/y鼠标移动转换为可以映射到箭头键的规范化向量。根据您的场景,您可能需要翻转、更改旋转轴等。基本上,您需要决定锁定指针移动围绕哪两个轴旋转(我的示例假设X鼠标移动绕Y轴旋转,Y鼠标移动绕X轴旋转,这是非常典型的)。接下来,您需要确定箭头键构成的移动,在我的例子中,箭头键转换为“向前”,依此类推(同样,非常典型)一旦做出了这些决定,就可以用通常的三角学方法得到四个“方向”的方向和大小。我找到了一些至少10年前我为旋转星场所使用的javascript。我引入了一些代码,在上面的示例上创建了一个变体,它专门展示了一种实现您要求的方法。在示例中,您“看”上/下,左/右使用指针锁定机制,并可以使用箭头键移动。它很笨重,一次只能朝一个方向移动,旋转似乎有点麻烦,但它工作得很好,足以表明这个想法:采纳了您的建议,并得到了解决。谢谢!