如果前一章你觉得容易,现在将有点难。你的任务是查看CarPhysics类并弄懂如何相同的物理代码和碰撞检测是如何将车保持在赛道上,以及如何处理与护栏(不是一条直线)的碰撞。

要完成此项任务,最好是写一个单元测试,它绘制赛路,并让你以在TestCarPhysicsOnPlaneWithGuardRails单元测试中同样的方式控制汽车,以同样的方式处理游戏本身。但是,你也可以在CarPhysics类的Update方法设置断点来测试物理效果,然后通过步进代码看看变量是如何变化的。图13-16显示了这样一个单元测试。

1
Figure 13-16

如果你真的像扩展游戏并增加更多的功能,可以尝试改进物理效果甚至尝试实现一个物理引擎。至少在Windows平台上有可能改变游戏玩法,增加特效,并处理更复杂的碰撞情况。

一个小提示,如果你不知道在哪里寻找代码,或不知道赛道如何使用简单碰撞逻辑,请看看CarPhysics类UpdateCarMatrixAndCamera方法和Track类的GetTrackPositionMatrix方法。赛道矩阵将目前的道路片段转换为空间,以相同的方式使用汽车矩阵,两者在单元测试的平面碰撞检测中使用。