像RTS一样的摄像机运动

时间:2019-05-20 11:07:14

标签: javascript three.js game-development

我正在使用three.js制作RTS游戏,并且当鼠标位于摄像机端点的末端时,我正在努力使摄像机移动。我正在尝试使摄影机动作像《魔兽争霸》,《英雄联盟》等。

我了解我需要检查鼠标和边框的位置,并且当鼠标位置等于边框时,我需要向上/下/左/右移动摄像机。但是我只是不知道如何表达它在代码中。谢谢您的帮助,在此先感谢您。如果问题不在这里,我很抱歉,但是我找不到任何材料。谢谢!

1 个答案:

答案 0 :(得分:1)

我建议像这样实现它:

  • 注册用于鼠标移动事件的事件句柄并计算相对于画布的坐标
  • 定义画布的触发滚动的边界区域。我认为,将鼠标移到边缘越多,增加滚动速度是最有意义的。
  • 定义一个新变量cameraSpeed = new Vector3(),该变量存储摄像机的当前速度(例如,每帧的世界单位)

  • 在动画循环中

    • 根据鼠标位置计算cameraSpeed.xcameraSpeed.z(假设您的场景朝向y向上)
    • 根据当前速度(例如camera.position.add(cameraSpeed)
    • 更新camera.position

例如,如果要将其与OrbitControls结合使用,则还需要使用相机位置更新controls.target.position