首页 / Cesium / 使用示例
键盘推动相机
W、A、S、D 前后左右,Q、E 升降,按住 Shift 提速到 900 米每秒。 地面上排了网格方块,飞行时有参照。
源码与运行效果
按键状态与帧间隔
keydown 与 keyup 只负责记录布尔值,
真正推动相机的是 scene.preRender 里的逻辑。
用两帧之间的毫秒差算位移,速度就与帧率无关。
位移再小也要乘以时间,示例把帧间隔上限压在 0.08 秒, 防止切换标签页回来时瞬间跳出去很远。
用相机自己的坐标系
camera.moveForward、moveRight、moveUp
都沿相机当前朝向移动,不是沿世界轴。因此低头时按 W 会向下前移,
这正好符合飞行视角的直觉。
可调参数
| 位置 | 改什么 | 效果 |
|---|---|---|
speed 的 120 | 改成 30 | 慢速巡检,便于定位 |
keys.shift 的 900 | 改成 3000 | 长距离快速移动 |
KEYMAP | 换成别的键位 | 自定义操作方式 |
| 网格方块的间距 | 0.010 改成 0.005 | 地面参照更密 |
焦点丢失要清空按键。在页面上按着 W 切换到别的窗口,
松开时页面收不到 keyup,相机会一直往前飞。
示例监听 window.blur 把按键表整体清空,避免这种漂移。