| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /**
- * 小球防围困机制测试脚本
- * 用于测试小球在完全垂直或水平方向下是否能有效避免来回弹跳
- */
- console.log('=== 小球防围困机制测试 ===');
- console.log('测试目标:验证小球在完全垂直或水平方向下的防围困效果');
- console.log('');
- // 测试配置
- const testConfig = {
- // 防围困参数
- antiTrapTimeWindow: 5.0, // 时间窗口(秒)
- antiTrapHitThreshold: 5, // 撞击次数阈值
- deflectionAttemptThreshold: 3, // 偏移尝试次数阈值
- antiTrapDeflectionMultiplier: 3.0, // 偏移倍数
-
- // 测试参数
- testDuration: 30, // 测试持续时间(秒)
- expectedDirections: ['向上', '向下', '向左', '向右']
- };
- console.log('测试配置:');
- console.log(`- 防围困时间窗口: ${testConfig.antiTrapTimeWindow}秒`);
- console.log(`- 撞击次数阈值: ${testConfig.antiTrapHitThreshold}次`);
- console.log(`- 偏移尝试阈值: ${testConfig.deflectionAttemptThreshold}次`);
- console.log(`- 偏移增强倍数: ${testConfig.antiTrapDeflectionMultiplier}倍`);
- console.log(`- 测试持续时间: ${testConfig.testDuration}秒`);
- console.log('');
- // 测试步骤说明
- console.log('测试步骤:');
- console.log('1. 确保BallController.ts中的testMode设置为true');
- console.log('2. 在游戏中放置一些方块,形成可能导致小球来回弹跳的布局');
- console.log('3. 启动小球,观察控制台输出');
- console.log('4. 记录防围困机制的触发情况');
- console.log('');
- // 预期结果
- console.log('预期结果:');
- console.log('✅ 小球初始方向应该是完全垂直或水平的(向上/向下/向左/向右)');
- console.log('✅ 当小球在短时间内多次撞击同一区域时,应该触发防围困机制');
- console.log('✅ 防围困机制应该先尝试偏移反弹,如果偏移无效则启用穿透模式');
- console.log('✅ 控制台应该显示详细的防围困状态信息');
- console.log('');
- // 观察要点
- console.log('观察要点:');
- console.log('🔍 小球初始方向是否为四个基本方向之一');
- console.log('🔍 撞击统计是否正确累计(在时间窗口内)');
- console.log('🔍 达到阈值时是否正确触发防围困机制');
- console.log('🔍 偏移反弹是否改变了小球方向');
- console.log('🔍 穿透模式是否让小球暂时忽略碰撞');
- console.log('🔍 防围困机制是否有效解决了来回弹跳问题');
- console.log('');
- // 常见问题排查
- console.log('常见问题排查:');
- console.log('❌ 如果小球方向不是基本方向 -> 检查initializeDirection()中的testMode是否为true');
- console.log('❌ 如果没有防围困日志 -> 检查方块碰撞体设置,确保group=2');
- console.log('❌ 如果防围困无效 -> 调整antiTrapHitThreshold和antiTrapTimeWindow参数');
- console.log('❌ 如果偏移效果不明显 -> 增加antiTrapDeflectionMultiplier值');
- console.log('');
- // 性能监控建议
- console.log('性能监控建议:');
- console.log('📊 监控ballHitHistory的大小,避免内存泄漏');
- console.log('📊 观察防围困机制的触发频率,避免过于频繁');
- console.log('📊 检查穿透模式的持续时间是否合适(当前0.5秒)');
- console.log('');
- // 参数调优建议
- console.log('参数调优建议:');
- console.log('⚙️ 如果防围困触发太频繁 -> 增加antiTrapHitThreshold或减少antiTrapTimeWindow');
- console.log('⚙️ 如果防围困触发太少 -> 减少antiTrapHitThreshold或增加antiTrapTimeWindow');
- console.log('⚙️ 如果偏移效果不够 -> 增加antiTrapDeflectionMultiplier');
- console.log('⚙️ 如果穿透时间太短 -> 在代码中增加穿透持续时间(当前0.5秒)');
- console.log('');
- console.log('=== 开始测试,请在游戏中启动小球并观察控制台输出 ===');
- // 导出测试配置供其他脚本使用
- if (typeof module !== 'undefined' && module.exports) {
- module.exports = testConfig;
- }
|