1.2 KiB
1.2 KiB
1. 理解和实现
- 1.1 理解
ApplyTankMovementToPredictedState的积分逻辑(旋转 → 前进方向的依赖关系) - 1.2 理解当前
ReplayPendingInputs的一次性积分行为与问题 - 1.3 在
MovementComponent中引入服务端SimulationInterval的引用(50ms 步长常量)
2. 修改 ReplayPendingInputs 实现
- 2.1 修改
ReplayPendingInputs循环,将每个PredictedMoveStep的总时长按 50ms 步长分步模拟 - 2.2 添加浮点截断保护,确保所有时长都被消耗而无遗失
- 2.3 验证修改后的实现与
FixedUpdate预测路径的积分形状一致
3. 添加回归测试
- 3.1 在
GameplayFlowRoundTripTests.cs或新建测试文件中添加轨迹一致性测试 - 3.2 测试用例:相同 turn+throttle 输入序列,逐步预测 vs 回放预测的最终位置和旋转相等
- 3.3 测试用例:非线性运动(同时转向和前进),验证逐步积分与一次性积分的结果不同
- 3.4 测试用例:非 50ms 倍数的总时长(如 0.12s),验证分步后无遗失
4. 验证
- 4.1 运行所有 EditMode 测试确保无回归(在 Unity Editor 内执行)
- 4.2 本地回环验证抖动是否改善