鼠标控制

这是 Gamedev Canvas 教程 的 10 步中的第 **9 步**。您可以在 Gamedev-Canvas-workshop/lesson9.html 中找到完成本课后代码应该具有的样子。

游戏本身实际上已经完成了,所以让我们着手完善它。我们已经添加了键盘控制,但我们也可以轻松地添加鼠标控制。

监听鼠标移动

监听鼠标移动比监听按键事件还要容易:我们只需要监听 mousemove 事件。将以下行添加到其他事件监听器中的相同位置,就在 keyup 事件 下面

js
document.addEventListener("mousemove", mouseMoveHandler, false);

将球拍的移动绑定到鼠标的移动

我们可以根据指针坐标更新球拍的位置——以下处理程序函数将执行此操作。将以下函数添加到您的代码中,位于您添加的上一行下面

js
function mouseMoveHandler(e) {
  const relativeX = e.clientX - canvas.offsetLeft;
  if (relativeX > 0 && relativeX < canvas.width) {
    paddleX = relativeX - paddleWidth / 2;
  }
}

在此函数中,我们首先计算 relativeX 值,该值等于视窗中的水平鼠标位置 (e.clientX) 减去画布左边缘和视窗左边缘之间的距离 (canvas.offsetLeft)——实际上,这等于画布左边缘和鼠标指针之间的距离。如果相对 X 指针位置大于 0 且小于画布宽度,则指针在画布边界内,并且 paddleX 位置(锚定在球拍的左边缘)设置为 relativeX 值减去球拍宽度的一半,这样移动实际上将相对于球拍的中间进行。

现在,球拍将跟随鼠标光标的位置,但由于我们将移动限制在画布的大小内,因此它不会完全消失在任何一侧。

比较你的代码

这是与之进行比较的最新代码状态

注意:尝试调整球拍移动的边界,以便整个球拍在画布的两侧都可见,而不仅仅是它的一半。

下一步

现在我们已经完成了一个完整的游戏,我们将通过一些小的调整来结束我们的课程系列——收尾工作