ios游戏开发--Cocos2D-x中的物理引擎.PPT
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
□关节限制(jointlimk):限制关节的运动范围如同人的胳賻只能在一定范围内运动
一样。
□世界(world):物体、形状和约束互相作用形成的世界:允许创建多个世界。
.移动互联网创新工场
从那以后,Box2D引擎的开发就十分活跃,Box2D的各种实现版本就层出不穷,包括用于Flash网页游戏的版本。 Box2D和手机游戏的结缘可以说是从Box2D的Java版本岀现开始。开发者喜欢在Android的游戏开发时集成Box2D来 帮助开发更炫的游戏效果。自从Box2D集成到C0C0S2D系列引擎以后,Box2D和手机游戏的联系更加紧密。
Cocos2D-x中支持Box2D和Chipmunk两种物理引擎。本章就介绍物理引擎的基本概念Cccos2D-x中这两种物 理引擎的使用。
.移动互联网创新工场
ቤተ መጻሕፍቲ ባይዱ
2020/9/17
2
物理引擎
在使用物理引擎的游戏中,可以把物理引擎理解为控制整个游戏中精灵移动的逻辑控制餐通过定义不同节点 在物理效果中扮演的角色来控制所有节点的碰撞和移动轨迹。
.移动互联网创新工场
第10章 Cocos2D-x中的物理引擎
2020/9/17
1
游戏中有很多模拟现实的部分,这些模拟可以使玩家的感觉更真实。虽然不是对于所有游戏来说都必须使用 物理引擎,但当需要大量的模拟碰撞和自由落体运动时,选择物理引擎来开发无疑会使开发事半功倍。
在智能机平台游戏中,包括愤怒的小鸟等游戏都采用了物理引擎进行开发。
什么是物理引擎
游戏世界的很多运动规律都是模拟现实的,尽管有些游戏在现实的基础上有所创新,但是更多的时候要给玩家 以真实的感觉,模拟现实并给予玩家真实的游戏感觉非常重要。在不使用物理引擎的时候,可以通过自己的算 法来计算物体的运动规律。这种方式不仅降低了开发效率,而且在运行效果上也得到整体的优化。于是大家把 游戏中模拟物理的计算算法都提卜总结出来,形成了物理引擎。物理引擎通过为刚性物体赋予真实的物理属性 的方式来计算£动、旋转和碰撞反映。
□关节与连接的模拟。例如,愤怒的小鸟游戏不仅要处理大量的碰撞,还要处理需要攻击目标建筑物之间的连 接效果等。这时候用物理引擎来帮助实现不仅加快了开发速度,同时系统化的处理还可以提高程序的运行效果。
□优化的性能。物理引擎对于模拟物理效果的算法进行了优化,这些代码都是经历过很多次推敲的,比个人实 现的算法在整体的性能上要高。
物理引擎使用对象属性(动量、扭矩或者弹性)来模拟刚体行为。好的物理引擎允许有复杂的机械装置,像球 形关节、轮子、气缸或者铰链。有些也支持非刚性体的物理属性,比淹体。
尽管物理引擎的功能很强大,但是也有其局限性。在模拟现实世界相关运动效果时,如杲完全模拟,会消耗很 大的运算量,因此采取一些“捷径”来模拟现实的运行效果。比如,当物体运动的步长(速度)超过它自己本 身的效果时,会发生物体互相穿透的效果,所以需要控制物体的移动速度来避免这种穿越现象的发生
在使用上,由于二者的实现语言不同,所以从自己熟悉的语言开始会相对容易一些。另外,Chipmunk 有不错的Objective-C语言接口,对于苹果系列设备的开发更好一些,尤其在Cocos2D-iPhone中,因此,之前 使用Cocos2D-iPhone可能也会更倾向于使用Chipmunk。
.移动互联网创新工场
个物体固定在墙上,它只能绕着固定的点旋转,它失去了两个自由度。
□接触约束(contactconstraint):自动创建的约束,防止刚体穿透、模拟摩擦和恢复的特殊约束,
不需要手动创建。
□关节(joint):把两个物体固定在一起的约束,包括旋转、距离和棱柱等。关节可以支持限制和马
达。
□关节马达(jointmotor):—个关节马达依靠自由度来驱动物体,比如使用马达来驱动旋转。
.移动互联网创新工场
2020/9/17
3
物理引擎的作用
□真实的物理世界的模拟。采用牛顿力学为基础模拟出物理效果。这样有两个好处,首先是精灵的运动会更加 真实,包括精灵间的相互碰撞、自由落体等,然后就是可以增加操作的随机性,从而提高游戏的游戏性。
□整体的处理碰撞机制。虽然绝大部分碰撞的逻辑可以完全不依赖物理引擎来自己实现,但是如果一个游戏需 要频繁地大量地处理碰撞的时候,物理引擎绝对是第一选择,因为物理引擎可以系统化处理碰撞,并且能够处 理较为复杂的情况。
2020/9/17
5
Box2D物理引擎
Box2D是用C++编写的,开发者是ErinCatto。他从2005年开始就在著名的GDC(GameDevelopersConference, 游 戏开发者会议)上做物理模拟相关的演讲。
2007年9月,他公布了Box2D物理引擎。Box2D以其出色的物理模拟效果和开源的氏性得到了开发者的认同。
Box2D由C++实现,而且有JavaScript等其他语言的实现,在Hash网页动画等方面应用也比较广泛, 因此大多数开发人员比较偏爱Box2D。
单纯从功能上来说,Box2D和Chipmunk并没有太大的区别,只是有一些微小的区别.比如Box2D针对快 速移动的物体“穿越”另一物体有特殊的检测方式。除非你对某种功能有着特殊的需求,否则二者在功能上没有 本质的区别。
.移动互联网创新工场
2020/9/17
4
Box2D和Chipmunk的对比
和Cocos2D引擎一样,Cocos2D-x同样支持Box2D和Chipmunk两个二维的物理引擎,那么在开发中如何选择呢? 二者又有何异同呢?
Chipmunk是COCOS2D系列游戏引擎最早引入的物理引擎,用C语言实现。由于文档较少,其使用程度没 有Box2D广泛。
.移动互联网创新工场
2020/9/17
6
BOX2D引擎中的重要概念
本部分介绍Box2D引擎中的重要概念,这些概念是构成Box2D世界的基础。
□刚体(rigidbody):不会发生形变的物体,其任何两点间的距离是不变的。
□形状(shape):依附于物体的二维的形状结构,具有摩擦和恢复的材料属性。
□约束(constraint):约束就是限制物体自由的物理连接:在二维中,物体有三个自由度,比如把一