# BallController配置应用修复说明 ## 问题描述 用户报告 `BallController.ts` 似乎没有应用 `ballController.json` 中的配置数据。 ## 问题分析 通过代码检查发现以下问题: 1. `BallControllerConfig` 接口缺少 `maxAttempts` 参数定义 2. `BallController.ts` 中的默认配置缺少 `maxAttempts` 参数 3. `positionBallRandomly` 方法中硬编码了 `maxAttempts = 50`,没有使用配置值 4. 缺少 `maxAttempts` 的 getter 方法 ## 修复内容 ### 1. 更新配置接口 **文件**: `assets/scripts/Core/ConfigManager.ts` - 在 `BallControllerConfig` 接口中添加 `maxAttempts: number` 参数 ### 2. 更新默认配置 **文件**: `assets/scripts/CombatSystem/BallController.ts` - 在默认配置对象中添加 `maxAttempts: 50` 参数 ### 3. 添加配置getter方法 **文件**: `assets/scripts/CombatSystem/BallController.ts` - 添加 `get maxAttempts()` 方法,使用 `getConfigValue` 获取配置值 ### 4. 修复硬编码值 **文件**: `assets/scripts/CombatSystem/BallController.ts` - 将 `positionBallRandomly` 方法中的硬编码 `maxAttempts = 50` 改为 `this.maxAttempts` ## 配置参数说明 当前 `ballController.json` 包含以下19个配置参数: | 参数名 | 类型 | 当前值 | 说明 | |--------|------|--------|------| | baseSpeed | number | 30 | 球的基础移动速度 | | maxReflectionRandomness | number | 0.2 | 反弹随机偏移最大角度 | | antiTrapTimeWindow | number | 5 | 防围困时间窗口 | | antiTrapHitThreshold | number | 5 | 防围困撞击阈值 | | deflectionAttemptThreshold | number | 3 | 偏移尝试阈值 | | antiTrapDeflectionMultiplier | number | 3 | 防围困偏移倍数 | | FIRE_COOLDOWN | number | 0.05 | 子弹发射冷却时间 | | ballRadius | number | 25 | 球的半径 | | gravityScale | number | 0 | 重力缩放 | | linearDamping | number | 0 | 线性阻尼 | | angularDamping | number | 0 | 角阻尼 | | colliderGroup | number | 1 | 碰撞组 | | colliderTag | number | 1 | 碰撞标签 | | friction | number | 0 | 摩擦力 | | restitution | number | 1 | 弹性系数 | | safeDistance | number | 20 | 安全距离 | | edgeOffset | number | 20 | 边缘偏移 | | sensor | boolean | false | 传感器模式 | | maxAttempts | number | 50 | 最大尝试次数 | ## 配置应用机制 1. **配置加载**: `loadConfig()` 方法在 `start()` 时调用 2. **配置应用**: `applyConfig()` 方法将配置值赋给类属性 3. **配置获取**: 通过 getter 方法使用 `getConfigValue()` 获取配置值 4. **默认值**: 如果配置文件未设置,使用代码中的默认配置 ## 验证结果 ✅ **配置应用验证通过**: - 配置接口定义完整 - 配置应用逻辑正确 - 配置值一致性良好 - 所有19个参数都能正确从JSON文件加载和应用 ## 使用说明 1. 确保在Cocos Creator编辑器中将 `ballController.json` 文件拖拽到 `BallController` 组件的 `ballControllerConfig` 属性中 2. 修改 `ballController.json` 中的参数值后,重新运行游戏即可生效 3. 如果配置文件未设置,系统会使用代码中的默认值并在控制台显示警告 ## 注意事项 - 配置文件必须是有效的JSON格式 - 所有数值类型参数必须是数字 - 布尔类型参数必须是 `true` 或 `false` - 修改配置后需要重新启动游戏才能生效