chinese-8ball
本页由项目自动归档生成,源码与最新进展以 GitHub 仓库为准。
项目简介
chinese-8ball 是一个基于 Three.js 的 3D 中式八球(八球/十六彩)台球网页游戏,以单个 index.html 即可运行,无需任何构建步骤。它用真实的桌面比例建模球台与球,实现了瞄准、力度控制与简易物理碰撞,可作为台球物理与 WebGL 渲染的演示项目。
技术栈
| 维度 | 技术 |
|---|---|
| 主要语言/框架 | HTML / CSS / JavaScript(ES Module) |
| 关键依赖/库 | Three.js 0.160.0(通过 importmap 从 unpkg CDN 加载)、OrbitControls 插件 |
| 数据存储 | 无(纯前端,状态保存在内存) |
| 运行/部署方式 | 浏览器直接打开 index.html,零构建、零后端 |
核心功能 / 亮点
- 3D 球台建模:按真实比例(
TABLE_WIDTH=2.54、TABLE_HEIGHT=1.27等)构建绿色台呢、木质护栏、6 个袋口(四角 + 两中袋)、桌腿与顶部灯罩,并启用PCFSoftShadowMap软阴影与ACESFilmicToneMapping。 - 完整球组与三角架:
rackOrder定义 1–15 号球的标准摆位,1–7 为全色、8 号黑色、9–15 为花色;createBallTexture用 Canvas 程序化生成球面纹理与数字圆圈。 - 瞄准系统:点击白球拖拽瞄准,
findFirstHitBall用射线检测计算首个碰撞球,并显示半透明「假想球」(ghostBall) 与红色目标球预测方向线 (predictLine)。 - 力度控制:右侧
power-bar力度条根据拖拽距离(上限 0.5 单位)实时计算击球力量。 - 简易物理模拟:
updatePhysics实现摩擦衰减(FRICTION=0.985)、库边反弹(恢复系数 0.8)、球与球的动量传递碰撞,以及袋口检测(入袋即移除球体)。 - 视角控制:OrbitControls 支持鼠标拖拽旋转、滚轮缩放,并限制俯仰角与缩放距离。
- 双人对战 UI:顶部双方面板显示玩家名与各自剩余球架(
ball-rack),中央显示「中式八球」标题与当前回合信息。
目录结构
1 | chinese-8ball/ |
相关链接
- GitHub 仓库:chinese-8ball