今天物理学已成为了游戏的一个重要组成部分,但你也看到它不是很容易将一个现成的物理引擎在XNA中实现。但是,你仍然可以通过自己的方式实现物理引擎,并可运行于Xbox 360上,而Xbox 360上是不允许非托管代码的。

物理学有许多议题,可以肯定全部都自己实现是不容易的,即使有一个良好的物理引擎你还必须做大量的调整和测试。然而,如果与你竞争的另一个游戏有大量的物理效果又不破坏游戏的乐趣,那么相对你的只有基本规则的游戏,那个游戏会更好。从这章的篇幅和在本书中的位置,你也应该意识物理不是一个简单的议题,特别是对初学者来说。虽然本章未能涵盖物理引擎的方方面面,但至少已了解了现有的物理引擎。如果你有兴趣阅读更多有关物理学的知识,可以参考网络、很多好书或如Game Programming Gems之类的系列书上的资料。

赛车游戏、游戏逻辑和如何处理每件事将在下一章讨论。本书的其他游戏也使用了一点物理效果,但你可以忽略许多其他问题。例如,XNA Shooter只处理飞船,敌人,弹丸运动和通过检查距离处理简单的碰撞检测,但游戏运行良好。同样的方式,在赛车游戏中你只实现必要的物理效果,即不要多也不要少。

本章你学习了以下议题,这些都用于赛车游戏:

  • 牛顿运动定律可能有点老,但它们仍然是有用的,让你可以快速在游戏实现简单的物理效果。著名的公式F=ma也被使用了几次,它是大多数物理计算的最重要的公式。 ? 始终保持尽可能简单,将问题分解成较小的问题,并编写单元测试以找出下一步该怎么办,这样你就不会编写将来不会用到的任何不必要的代码。

  • 始终保持尽可能简单,将问题分解成较小的问题,并编写单元测试以找出下一步该怎么办,这样你就不会编写将来不会用到的任何不必要的代码。
  • 你学习了今天可用的所有物理引擎。PhysX和Havok是主要的两个,但它们都是商业引擎,你无法将它们插入XNA中,而且它们使用非托管代码所以你也不能期望能工作在Xbox 360上。因为它们收费很高,你可能会想使用一个免费的,有很多示例和教程,但遭受同样缺乏对. NET的支持。ODE.NET是一个很好的解决办法,因为很多工作已经完成,虽然它只支持一些基本功能,但它仍然是一个非常强大的物理引擎,可以节省你几个月的工作。

  • 然后你一步步地解决了在赛车游戏中遇到的问题,如冲过环形赛道、处理弹性物理以及如何处理碰撞。Rocket Commander使用一个更为复杂的碰撞检测系统,但因为你只检查包围球是否碰撞,所以碰撞本身是相当简单的。

  • 当检测到碰撞后必须加以处理,要使碰撞检测更精确,你将花费大部分的时间去调整代码,以确保碰撞是真实的。在赛车游戏我没有太多的时间去做更多的调整,但基本的规则已经实现了,任何人如果有兴趣来改进游戏,可以添加更多的物理碰撞和计算。

在本书中的最后一章第14章,你将学习赛车游戏的所有知识,以及如何创造改编版本,这将是相当令人激动的。