跳到主要内容
PUZZLE GAME / 3D

3D 魔方

经典三阶魔方,在浏览器中以 3D 形式呈现。手指在魔方上滑动可旋转对应面,拖动空白处可旋转视角,附带打乱/撤销/计时等完整功能。

玩法说明​

  • 滑动魔方 — 在魔方上朝任意方向滑动,对应面会旋转 90°
  • 拖动空白处 — 旋转视角,从不同角度观察魔方
  • 滚轮 / 双指捏合 — 缩放视角
  • 打乱 — 一键随机打乱(25 步),开始计时
  • 撤销 — 撤销上一步操作
  • 还原 — 恢复到初始已还原状态

操作​

操作桌面端移动端
转面在魔方上滑动在魔方上滑动
旋转视角拖动空白处拖动空白处
缩放鼠标滚轮双指捏合
转面快捷键F B L R U D(+ Shift 反向)—
打乱 / 撤销 / 还原按钮按钮

特点​

  • 27 个 cubie 子方块建模,物理正确
  • 旋转轴/方向遵循右手法则,位置与朝向严格同步
  • 自动胜利检测:6 面颜色均匀时弹出胜利提示
  • 计时 + 步数统计,本地无持久化(每次刷新重置)
  • 跨平台:鼠标 + 触屏 + 键盘

技术实现​

  • Three.js 0.160(CDN 引入),WebGL 渲染
  • Cubie 模型 — 27 个子方块,每个记录逻辑位置 gridPos ∈ {-1, 0, 1}³ 和累积朝向 quaternion
  • 临时 Group 旋转 — 转面时把 9 个 cubie 临时挂到 Group 上旋转,动画结束后回写世界变换到主 Group,保证视觉与逻辑严格同步
  • Raycaster 拾取 — pointerdown 时判断点击落在魔方上还是空白处,严格互斥地分发到「转面模式」或「视角模式」
  • 球坐标相机 — 拖动空白处累加 (theta, phi) 球坐标增量,滚轮调整 distance
  • 撤销栈 — 每次操作 push (face, dir),撤销时执行反向旋转