一个基于 Three.js 的 3D 网页小游戏。在开阔的 3D 场景中收集水滴,看着树木随着你的努力一步步成长。
- 在场景中收集散落的水滴
- 每收集一颗水滴,树木会生长一个阶段(共 7 个阶段)
- 集齐所有水滴,树木完全成熟,获得胜利
支持两种树种:桃子树和橘子树,可在设置中切换。
| 平台 | 操作 |
|---|---|
| 键盘移动 | WASD 或 方向键 |
| 跳跃 | 空格 |
| 疾跑 | 双击 W/↑ 后继续按住 |
| 视角旋转 | 鼠标拖拽 / 触屏滑动 |
| 指针锁定 | 操作体验 |
移动端支持虚拟摇杆和十字键盘两种触控方案,可在设置中切换。
纯静态项目,无需安装依赖:
# 本地服务器(推荐,避免 ES Module 的 CORS 问题)
npx serve .├── index.html # 入口页面
├── src/
│ ├── main.js # 主逻辑(场景、游戏循环、UI)
│ ├── config/
│ │ ├── constants.js # 游戏参数和树木配置
│ │ ├── constants.local.js # 本地覆盖(gitignore)
│ │ └── timeouts.js # 加载超时配置
│ ├── managers/
│ │ └── TreeManager.js # 树模型管理(预加载、缓存、切换)
│ ├── loaders/
│ │ ├── FBXTreeLoader.js # FBX 格式加载器
│ │ └── GLBTreeLoader.js # GLB 格式加载器
│ ├── utils/
│ │ └── LoadingUtils.js # 加载重试和降级逻辑
│ ├── objects/ # 3D 模型和纹理资源
│ │ ├── PeachTree/ # 桃子树模型(7 阶段)
│ │ ├── OrangeTree/ # 橘子树模型(7 阶段)
│ │ └── Man!/ # 角色模型
│ └── styles/
│ └── main.css # UI 样式
游戏参数在 src/config/constants.js 中定义。本地开发时创建 src/config/constants.local.js 覆盖默认值(不会提交到 git):
// 示例:替换模型路径为 CDN 地址
export const PEACH_TREE_CONFIG = {
loaderType: 'fbx',
stages: [
{ name: '种子期', model: 'https://your-cdn.com/PeachTree0.fbx', duration: 10 },
// ...
]
};- Three.js v0.128.0(CDN 加载)
- 原生 ES Modules,无构建工具
- 纯前端,无需后端服务