Files
shooter-demo/PINBALL_INTEGRATION_GUIDE.md
2025-11-28 18:11:30 +08:00

135 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Pinball Standalone 模式集成指南
## 场景集成步骤
### 1. 打开 client-standalone.scene
在Cocos Creator编辑器中打开 `client-cocos/assets/scenes/client-standalone.scene` 文件。
### 2. 创建PinballManager节点
1. 在场景层级面板中,右键点击根节点
2. 选择"创建" -> "空节点"
3. 重命名为 "PinballManager"
### 3. 添加PinballManager脚本
1. 选择 PinballManager 节点
2. 在属性检查器中点击"添加组件"
3. 搜索并添加 "PinballManager" 组件
4. 组件位置:`assets/scripts/Modules/Pinball/PinballManager.ts`
### 4. 设置必需的节点引用
#### 4.1 设置相机节点
1. 在场景中找到或创建主相机节点 "Main Camera"
2. 在 PinballManager 组件中,将 "Main Camera" 节点拖拽到 "Camera Node" 字段
#### 4.2 设置渲染容器
1. 创建一个空节点命名为 "RenderContainer"
2. 将此节点拖拽到 PinballManager 组件的 "Render Container" 字段
#### 4.3 设置UI容器可选
1. 创建一个空节点命名为 "UIContainer"
2. 将此节点拖拽到 PinballManager 组件的 "UI Container" 字段
### 5. 配置组件参数
在 PinballManager 组件中设置以下参数:
```
Default Mode: Standalone
Auto Start: true
Debug Mode: true
```
### 6. 确保WASM文件存在
确认以下文件存在:
- `client-cocos/assets/wasm/pinball_physics.wasm` (666KB)
### 7. 运行测试
1. 保存场景
2. 构建并运行项目
3. 在 client-standalone 场景中应该能看到:
- 控制台输出 PinballManager 初始化信息
- 点击屏幕可以创建弹珠
- 弹珠受物理引擎控制下落
## 预期功能
### 输入交互
- 鼠标点击:在点击位置创建弹珠
- 触摸屏幕:在触摸位置创建弹珠
### 物理模拟
- 弹珠受重力影响下落
- 弹珠与世界边界发生碰撞
- 弹珠具有弹性和摩擦属性
### 渲染效果
- 弹珠以圆形图形渲染
- 实时更新弹珠位置
- 支持多个弹珠同时存在
## 调试信息
启用调试模式后,控制台会输出以下信息:
- `[PinballManager] 初始化完成`
- `[StandaloneMode] 初始化完成`
- `[StandaloneMode] 创建弹珠 #X 在位置 (x, y)`
## 故障排除
### 常见问题
1. **WASM加载失败**
- 检查 `assets/wasm/pinball_physics.wasm` 文件是否存在
- 确认文件大小为 666KB
2. **节点引用缺失**
- 确保 Camera Node 和 Render Container 已正确设置
- 检查节点名称是否正确
3. **输入无响应**
- 确认场景中存在主相机
- 检查输入事件是否被其他组件拦截
4. **弹珠不显示**
- 检查渲染容器设置是否正确
- 确认 Graphics 组件正常工作
## 技术架构
### 组件关系
```
PinballManager (主控制器)
├── StandaloneMode (游戏模式)
│ ├── WasmPhysicsEngine (物理引擎)
│ ├── PinballRenderer (渲染器)
│ └── InputManager (输入管理)
└── EventBus (事件通信)
```
### 事件流
1. InputManager 捕获用户输入
2. 发送 input.mouse.click/input.touch.start 事件
3. StandaloneMode 接收事件并创建弹珠
4. WasmPhysicsEngine 处理物理模拟
5. PinballRenderer 渲染弹珠位置更新
## 下一步
这个基础的 Standalone 模式为后续开发提供了良好的基础:
1. **增强渲染效果**:添加粒子效果、阴影、光照
2. **添加游戏机制**:弹珠台元素、得分系统、目标
3. **多人模式**:实现 Client/Server Multiplayer 模式
4. **性能优化**:对象池、渲染批次优化
5. **UI界面**:游戏菜单、设置、统计界面
当前实现已完成 Pinball 物理世界的核心架构,可以作为更复杂功能的稳固基础。