ios游戏开发--Cocos2D-x中的物理引擎_第1页
ios游戏开发--Cocos2D-x中的物理引擎_第2页
ios游戏开发--Cocos2D-x中的物理引擎_第3页
ios游戏开发--Cocos2D-x中的物理引擎_第4页
ios游戏开发--Cocos2D-x中的物理引擎_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、游戏开发Cocos2D-X第10章 Cocos2D-x中的物理引擎2021/8/2移动互联网创新工场12021/8/2移动互联网创新工场2游戏中有很多模拟现实的部分,这些模拟可以使玩家的感觉更真实。虽然不是对于所有游戏来说都必须使用物理引擎,但当需要大量的模拟碰撞和自由落体运动时,选择物理引擎来开发无疑会使开发事半功倍。在智能机平台游戏中,包括愤怒的小鸟等游戏都采用了物理引擎进行开发。Cocos2D-x中支持Box2D和Chipmunk两种物理引擎。本章就介绍物理引擎的基本概念Cccos2D-x中这两种物理引擎的使用。物理引擎物理引擎2021/8/2移动互联网创新工场3在使用物理引擎的游戏中,

2、可以把物理引擎理解为控制整个游戏中精灵移动的逻辑控制餐通过定义不同节点在物理效果中扮演的角色来控制所有节点的碰撞和移动轨迹。 游戏世界的很多运动规律都是模拟现实的,尽管有些游戏在现实的基础上有所创新,但是更多的时候要给玩家以真实的感觉,模拟现实并给予玩家真实的游戏感觉非常重要。在不使用物理引擎的时候,可以通过自己的算法来计算物体的运动规律。这种方式不仅降低了开发效率,而且在运行效果上也得到整体的优化。于是大家把游戏中模拟物理的计算算法都提卜总结出来,形成了物理引擎。物理引擎通过为刚性物体赋予真实的物理属性的方式来计算动、旋转和碰撞反映。物理引擎使用对象属性(动量、扭矩或者弹性)来模拟刚体行为。

3、好的物理引擎允许有复杂的机械装置,像球形关节、轮子、气缸或者铰链。有些也支持非刚性体的物理属性,比淹体。尽管物理引擎的功能很强大,但是也有其局限性。在模拟现实世界相关运动效果时,如杲完全模拟,会消耗很大的运算量,因此采取一些“捷径”来模拟现实的运行效果。比如,当物体运动的步长(速度)超过它自己本身的效果时,会发生物体互相穿透的效果,所以需要控制物体的移动速度来避免这种穿越现象的发生 什么是物理引擎 物理引擎的物理引擎的作用作用2021/8/2移动互联网创新工场4真实的物理世界的模拟。采用牛顿力学为基础模拟出物理效果。这样有两个好处,首先是精灵的运动会更加真实,包括精灵间的相互碰撞、自由落体等,

4、然后就是可以增加操作的随机性,从而提高游戏的游戏性。整体的处理碰撞机制。虽然绝大部分碰撞的逻辑可以完全不依赖物理引擎来自己实现,但是如果一个游戏需要频繁地大量地处理碰撞的时候,物理引擎绝对是第一选择,因为物理引擎可以系统化处理碰撞,并且能够处理较为复杂的情况。关节与连接的模拟。例如,愤怒的小鸟游戏不仅要处理大量的碰撞,还要处理需要攻击目标建筑物之间的连接效果等。这时候用物理引擎来帮助实现不仅加快了开发速度,同时系统化的处理还可以提高程序的运行效果。优化的性能。物理引擎对于模拟物理效果的算法进行了优化,这些代码都是经历过很多次推敲的,比个人实现的算法在整体的性能上要高。Box2D和和Chipmu

5、nk的对比的对比 2021/8/2移动互联网创新工场5和Cocos2D引擎一样,Cocos2D-x同样支持Box2D和Chipmunk两个二维的物理引擎,那么在开发中如何选择呢?二者又有何异同呢?Chipmunk是COCOS2D系列游戏引擎最早引入的物理引擎,用C语言实现。由于文档较少,其使用程度没有Box2D广泛。Box2D由C+实现,而且有JavaScript等其他语言的实现,在Hash网页动画等方面应用也比较广泛,因此大多数开发人员比较偏爱Box2D。单纯从功能上来说,Box2D和Chipmunk并没有太大的区别,只是有一些微小的区别.比如Box2D针对快速移动的物体“穿越”另一物体有特

6、殊的检测方式。除非你对某种功能有着特殊的需求,否则二者在功能上没有本质的区别。在使用上,由于二者的实现语言不同,所以从自己熟悉的语言开始会相对容易一些。另外,Chipmunk有不错的Objective-C语言接口,对于苹果系列设备的开发更好一些,尤其在Cocos2D-iPhone中,因此,之前使用Cocos2D-iPhone可能也会更倾向于使用Chipmunk。 Box2D物理引擎物理引擎 2021/8/2移动互联网创新工场6Box2D是用C+编写的,开发者是ErinCatto。他从2005年开始就在著名的GDC(GameDevelopersConference, 游戏开发者会议)上做物理模拟

7、相关的演讲。2007年9月,他公布了Box2D物理引擎。Box2D以其出色的物理模拟效果和开源的氏性得到了开发者的认同。从那以后,Box2D引擎的开发就十分活跃,Box2D的各种实现版本就层出不穷,包括用于Flash网页游戏的版本。Box2D和手机游戏的结缘可以说是从Box2D的Java版本岀现开始。开发者喜欢在Android的游戏开发时集成Box2D来帮助开发更炫的游戏效果。自从Box2D集成到C0C0S2D系列引擎以后,Box2D和手机游戏的联系更加紧密。 BOX2D引擎中的重要概念引擎中的重要概念 2021/8/2移动互联网创新工场7本部分介绍Box2D引擎中的重要概念,这些概念是构成B

8、ox2D世界的基础。刚体(rigidbody):不会发生形变的物体,其任何两点间的距离是不变的。形状(shape):依附于物体的二维的形状结构,具有摩擦和恢复的材料属性。约束(constraint):约束就是限制物体自由的物理连接:在二维中,物体有三个自由度,比如把一个物体固定在墙上,它只能绕着固定的点旋转,它失去了两个自由度。接触约束(contactconstraint):自动创建的约束,防止刚体穿透、模拟摩擦和恢复的特殊约束,不需要手动创建。关节(joint):把两个物体固定在一起的约束,包括旋转、距离和棱柱等。关节可以支持限制和马达。关节马达(jointmotor):个关节马达依靠自由度

9、来驱动物体,比如使用马达来驱动旋转。关节限制(jointlimk):限制关节的运动范围如同人的胳賻只能在一定范围内运动一样。世界(world):物体、形状和约束互相作用形成的世界:允许创建多个世界。Box2D的使用步骤的使用步骤 2021/8/2移动互联网创新工场8Box2D物理引擎的使用步骤如下,同时也是大多数物理引擎所采用的方式。1)创建一个世界,同时设置其参数。2)创建刚体地面,定义一个形状,把它绑定在刚体上:3)创建世界中的其他刚体和约束等。4)在游戏的逻辑循环中加人物理引擎的世界更新函数。整个过程很清晰,主要目的就是将负责渲染的C0c0S2D-x引擎部分和负责物理逻辑的Box2D部分

10、结合在一起。这也是在其他平台上使用BOX2D时需要讀的事情,其中的创建刚体、约束和关节等是最关键的部分,也是和渲染的C0c0S2D-x引擎部分结合的关键部分。 在在Cocos2D-x中使用中使用Chipmunk 2021/8/2移动互联网创新工场9Chipmunk引擎由HowlingMoonSoftware的ScottLebcke开发,由C语言编写,项目两址是http:/c0de.g00gle.c0m/p/chipmunk-physics/,论坛地址是http:/chipmunk- 相关代码 请参见书籍10.3中的实例小结小结2021/8/2移动互联网创新工场10本章介绍了Cocos2D-x支持的两个物理引擎:Box

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论