XNA高级编程-第13章物理学.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
13.0概览 近些年来在游戏中使用物理学变得越来越流行。老游戏没有任何物理学,但最近许多射击游戏具有复杂的物理系统,这些系统只有通过计算能力的巨大提升和和多核系统才有可能实现。最近还出现了硬件PPU(物理处理单元),类似于GPU处理图形,这些处理器只计算物理系统。 使用物理学最多的游戏是第一人称射击游戏,特别是在那些玩家具有较大的自由度并允许自由走动并和场景发生互动的游戏中。其中最流行的游戏是2004年底发布的Half-Life 2,这个游戏使用了大量创新的物理技术,并在游戏中和任务设计中也涉及物理学。 Half-Life 2内部使用了商业的Havok物理引擎和其他一些物理框架,这马上就会说到。但这些引擎不能使用在Xbox 360与XNA框架上,因为它们都使用非托管代码,这在是Xbox 360是不允许的。在电脑上可以使用任何你喜欢的框架,本章马上就会讨论哪一个框架是最好的。基于上述理由,你现在开发的赛车游戏不使用任何先进的物理框架,而且使用并测试这么一个强大的物理框架要做大量的工作和测试,其中大部分物理引擎的许可费收费甚高。在Half-Life 2中,工程师花了数年时间调整游戏直到他们看到满意的结果。 物理总是伴随着繁重的数学计算。可以使用一个现成的物理框架或只使用一个简单的公式如著名的F=ma,而无需知道很多有关物理或数学的知识,但一旦你想开发自己的物理系统,你至少需要对牛顿运动定律有个基本的了解。手头备一本物理公式书或至少用谷歌搜索是一个好主意。图13-1显示了一个典型的物理问题,涉及了多个对象,作用力,重力等等。 图13-1 当你谈论物理学时你无法避开艾萨克牛顿,苹果和树,你知道这个故事。自那时以来物理已经发展了不少东西,既有研究原子,夸克,电子等微观世界的理论,还有研究宇宙,太阳系,行星和恒星等宏观世界的理论。但对大多数的游戏来说,你只使用一系列简单的物理公式以帮助你加速和减速对象。由于处理能力有限,只要看起来足够好就行了,你不必让每一个原子的行为都像在现实世界中的一样。 牛顿运动定律公式将大量使用,同时你也要花费大部分的时间解决碰撞问题,就像在第八章中为Rocket Commander游戏做得那样。物理是有趣的,而且借助于单元测试你可以快速测试直到正常工作,但你要知道——如果你的游戏世界不允许太多的互动,你可能会花费大量的时间在物理效果上却很难看到的结果。一个益智游戏有物理系统固然不错,但如果你所做的只是按一下物件使之移动,那就无需一个复杂的物理引擎。 13.1牛顿运动定律 让我们快速浏览一下运动学的重要定律。图13-2显示了看到这些物理规则: 第一定律——物体总保持静止或匀速直线运动状态,直到有外来迫使它改变这种状态。这很容易,因为所有物体运动都有一个运动向量或速度向量,除非你施加了力让其减速,加速或改变方向,否则不要改变该值。 第二定律——当施加一个外力时,这意味着你可以使物体加速或减速,如果超过一个维度(3D游戏中有三维),你还可以改变物体运动的方向。在这种情况下你使用向量代替标量,所有向量部分(x、y和z)都将发生变化。由于物体质量永远不变(至少在大多数游戏中是这样),你可以使用简化的F=ma的公式,这里“a”是定义为速度的改变量除以时间改变量:a=dv/dt。 第三定律——每一个作用力都有一个与之大小相等方向相反的反作用力。这意味着如果你有一个力,如地球施加在物体上的引力,则物体也会在地球上施加一个方向相反的反作用力。由于地球比物体质量大得多,所以物体对地球的引力对地球没什么影响。但是,如果你有一个更大的物体,如太阳,地球的引力远远小于太阳的引力,幸好我们的地球总是在轨道上围绕太阳旋转,月球以同样的方式在轨道绕地球旋转。 图13-2 牛顿在他的“数学原理”一书中提出了这些定律,首次是万有引力定律,这个定律解释了行星运动以及为什么月球绕地球转而地球绕太阳转。当时这时非常令人激动的,但今天,每所学校的孩子都可以在物理课上计算出这一点,计算机算起这些东西更强大。在Rocket Commander中你已经看到成千上万的小行星各自的相互作用。它们之间不存在引力只是相互碰撞,但添加引力效果改进真实度是一个很大的挑战。 保持简单 由于物理学是一个很大的议题,在游戏中实现物理效果要你全力以赴,所以你应该尽量保持简单。通常你甚至不知道哪个公式是正确的——但只要能工作就行。例如,你不必编写代码去遵循牛顿第一定律,第三定律在很多情况下也可忽略,因为通常你只关心改变物体运动的力。 在你更深入的了解物理世界之前,让我们来看看现有的物理引擎,你应该确保你知道赛车游戏究竟需要什么。如果你需要的只是驾驶汽车并使之停留在地面上,那么没有必要实现一个非常复杂的物理引擎。我真的很希望能有更多时间在赛车游戏中实现物理效果,但游戏必须按时

文档评论(0)

189****6140 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档