§13.5挑战:实现道路碰撞检测

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

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

图13-16

图13-16

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

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


发布时间:2008/11/7 上午8:34:44  阅读次数:5020

2006 - 2024,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号