资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第10章章 Cocos2D-x中的物理引擎中的物理引擎2024/9/181游戏中有很多模拟现实的部分,这些模拟可以使玩家的感觉更真实。虽然不是对于所有游戏来说都必须使用物理引擎,但当需要大量的模拟碰撞和自由落体运动时,选择物理引擎来开发无疑会使开发事半功倍。在智能机平台游戏中,包括愤怒的小鸟等游戏都采用了物理引擎进行开发。 Cocos2D-x中支持Box2D和Chipmunk两种物理引擎。本章就介绍物理引擎的基本概念Cccos2D-x中这两种物理引擎的使用。2024/9/182物理引擎物理引擎在使用物理引擎的游戏中,可以把物理引擎理解为控制整个游戏中精灵移动的逻辑控制餐通过定义不同节点在物理效果中扮演的角色来控制所有节点的碰撞和移动轨迹。 游戏世界的很多运动规律都是模拟现实的,尽管有些游戏在现实的基础上有所创新,但是更多的时候要给玩家以真实的感觉,模拟现实并给予玩家真实的游戏感觉非常重要。在不使用物理引擎的时候,可以通过自己的算法来计算物体的运动规律。这种方式不仅降低了开发效率,而且在运行效果上也得到整体的优化。于是大家把游戏中模拟物理的计算算法都提卜总结出来,形成了物理引擎。物理引擎通过为刚性物体赋予真实的物理属性的方式来计算动、旋转和碰撞反映。 物理引擎使用对象属性(动量、扭矩或者弹性)来模拟刚体行为。好的物理引擎允许有复杂的机械装置,像球形关节、轮子、气缸或者铰链。有些也支持非刚性体的物理属性,比淹体。 尽管物理引擎的功能很强大,但是也有其局限性。在模拟现实世界相关运动效果时,如杲完全模拟,会消耗很大的运算量,因此采取一些“捷径”来模拟现实的运行效果。比如,当物体运动的步长(速度)超过它自己本身的效果时,会发生物体互相穿透的效果,所以需要控制物体的移动速度来避免这种穿越现象的发生 什么是物理引擎 2024/9/183物理引擎的作用物理引擎的作用真实的物理世界的模拟。采用牛顿力学为基础模拟出物理效果。这样有两个好处,首先是精灵的运动会更加真实,包括精灵间的相互碰撞、自由落体等,然后就是可以增加操作的随机性,从而提高游戏的游戏性。整体的处理碰撞机制。虽然绝大部分碰撞的逻辑可以完全不依赖物理引擎来自己实现,但是如果一个游戏需要频繁地大量地处理碰撞的时候,物理引擎绝对是第一选择,因为物理引擎可以系统化处理碰撞,并且能够处理较为复杂的情况。关节与连接的模拟。例如,愤怒的小鸟游戏不仅要处理大量的碰撞,还要处理需要攻击目标建筑物之间的连接效果等。这时候用物理引擎来帮助实现不仅加快了开发速度,同时系统化的处理还可以提高程序的运行效果。优化的性能。物理引擎对于模拟物理效果的算法进行了优化,这些代码都是经历过很多次推敲的,比个人实现的算法在整体的性能上要高。2024/9/184Box2D和和Chipmunk的的对比比 和Cocos2D引擎一样,Cocos2D-x同样支持Box2D和Chipmunk两个二维的物理引擎,那么在开发中如何选择呢?二者又有何异同呢?Chipmunk是COCOS2D系列游戏引擎最早引入的物理引擎,用C语言实现。由于文档较少,其使用程度没有Box2D广泛。Box2D由C+实现,而且有JavaScript等其他语言的实现,在Hash网页动画等方面应用也比较广泛,因此大多数开发人员比较偏爱Box2D。单纯从功能上来说,Box2D和Chipmunk并没有太大的区别,只是有一些微小的区别.比如Box2D针对快速移动的物体“穿越”另一物体有特殊的检测方式。除非你对某种功能有着特殊的需求,否则二者在功能上没有本质的区别。在使用上,由于二者的实现语言不同,所以从自己熟悉的语言开始会相对容易一些。另外,Chipmunk有不错的Objective-C语言接口,对于苹果系列设备的开发更好一些,尤其在Cocos2D-iPhone中,因此,之前使用Cocos2D-iPhone可能也会更倾向于使用Chipmunk。 2024/9/185Box2D物理引擎物理引擎 Box2D是用C+编写的,开发者是ErinCatto。他从2005年开始就在著名的GDC(GameDevelopersConference, 游戏开发者会议)上做物理模拟相关的演讲。 2007年9月,他公布了Box2D物理引擎。Box2D以其出色的物理模拟效果和开源的氏性得到了开发者的认同。 从那以后,Box2D引擎的开发就十分活跃,Box2D的各种实现版本就层出不穷,包括用于Flash网页游戏的版本。Box2D和手机游戏的结缘可以说是从Box2D的Java版本岀现开始。开发者喜欢在Android的游戏开发时集成Box2D来帮助开发更炫的游戏效果。自从Box2D集成到C0C0S2D系列引擎以后,Box2D和手机游戏的联系更加紧密。 2024/9/186BOX2D引擎中的重要概念引擎中的重要概念 本部分介绍Box2D引擎中的重要概念,这些概念是构成Box2D世界的基础。刚体(rigidbody):不会发生形变的物体,其任何两点间的距离是不变的。形状(shape):依附于物体的二维的形状结构,具有摩擦和恢复的材料属性。约束(constraint):约束就是限制物体自由的物理连接:在二维中,物体有三个自由度,比如把一个物体固定在墙上,它只能绕着固定的点旋转,它失去了两个自由度。接触约束(contactconstraint):自动创建的约束,防止刚体穿透、模拟摩擦和恢复的特殊约束,不需要手动创建。关节(joint):把两个物体固定在一起的约束,包括旋转、距离和棱柱等。关节可以支持限制和马达。关节马达(jointmotor):个关节马达依靠自由度来驱动物体,比如使用马达来驱动旋转。关节限制(jointlimk):限制关节的运动范围如同人的胳賻只能在一定范围内运动一样。世界(world):物体、形状和约束互相作用形成的世界:允许创建多个世界。2024/9/187Box2D的使用步的使用步骤 Box2D物理引擎的使用步骤如下,同时也是大多数物理引擎所采用的方式。1)创建一个世界,同时设置其参数。2)创建刚体地面,定义一个形状,把它绑定在刚体上:3)创建世界中的其他刚体和约束等。4)在游戏的逻辑循环中加人物理引擎的世界更新函数。 整个过程很清晰,主要目的就是将负责渲染的C0c0S2D-x引擎部分和负责物理逻辑的Box2D部分结合在一起。这也是在其他平台上使用BOX2D时需要讀的事情,其中的创建刚体、约束和关节等是最关键的部分,也是和渲染的C0c0S2D-x引擎部分结合的关键部分。 2024/9/188在在Cocos2D-x中使用中使用Chipmunk Chipmunk引擎由HowlingMoonSoftware的ScottLebcke开发,由C语言编写,项目两址是,论坛地址是,可以通过这些网站获得相关的文档帮助等。 在Xcode下创建的Chipmunk项目和tests项目中的ChipmunkAccelTouchTest项目都是在Cocos2D-x中使用Chipmunk引擎的实例。 相关代码 请参见书籍中的实例2024/9/189小小结本章介绍了Cocos2D-x支持的两个物理引擎:Box2D和Chipmunk,分别介绍了两个引擎的基本概念和在Cocos2D-x中的使用实例。学习本章,要注意理解两个物理引擎的区别和特点。 2024/9/1810第第10章章 Cocos2D-x中的物理引擎中的物理引擎2024/9/1811
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号