在游戏中我们经常要加入物理碰撞等和物理有关的内容,在游戏中加入物理引擎可以使我们的游戏更加真实,为玩家展示一个更真实的世界,cocos2d-x支持两个物理引擎Box2d和Chipmunk,本文介绍box2d。
Box2D 是用可移植的 C++ 来写成的。引擎中定义的大部分类型都有 b2 前缀,可以把它和我们游戏中的其他元素区分开来。
Box2d中有很多概念。
1.刚体
即是物理学中的质点,只有位置,没有大小,它又可以区分为以下几类
静态刚体:静态刚体没有质量,没有速度,只可以手动来改变他的位置
棱柱刚体:棱柱刚体没有质量,但是可以有速度,可以自己更新位置
动态刚体:动态刚体有质量也有速度
物理引擎需要首先定义一个描述类,然后再根据描述类通过世界创建某个对象。创建刚体时需要有两个步骤,一是生成一个刚体定义,二是根据刚体定义生成刚体。在刚体创建时定义中的信息会被复制,也就是说创建完成后刚体只要没被释放掉,就还可以重复使用。
//定义刚体
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(screenSize.width/2/PTM_RATIO, screenSize.height/2/PTM_RATIO);
//生成刚体
b2Body* groundBody = world->CreateBody(&groundBodyDef);
2.形状
通过关联添加到刚体上,碰撞可以根据形状来判定,具有摩擦和恢复等材料特性。
b2PolygonShape groundBox;
// bottom
groundBox.SetAsBox(screenSize.width/2/PTM_RATIO, 0, b2Vec2(0, -screenSize.height/2/PTM_RATIO), 0);
3.关联
关联是一种附加在刚体上的属性,一个刚体可以有多个关联,创建关联时,需要定义关联的信息,然后通过刚体创建关联,当关联被创建时关联定义中的信息也会被保留,也可以重用
//定义并创建关联
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.3f;
body->CreateFixture(&fixtureDef);
4.链接
链接可以联系多个缸体,使得刚体之间相互影响,同样的,也需要首先定义信息,之后通过世界创建链接,同样的,信息也可以被保留,从而重用
另外链接还支持限制和马达,限制就是限制物体运动的角度,马达就是依照关节中的限制来约束物体
链接有旋转,棱柱和距离等
b2RevoluteJointDef rjd;
rjd.Initialize(m_attachment, m_platform, b2Vec2(0.0f, 5.0f));
rjd.maxMotorTorque = 50.0f;
rjd.enableMotor = true;
m_world->CreateJoint(&rjd);
5.约束
一个约束就是消除物体自由度的物理连接。在 2D 中,一个物体有 3 个自由度。如果我
们把一个物体钉在墙上(像摆锤那样),那我们就把它约束到了墙上。这样,此物体就只能绕着这个钉子旋转,所以这个约束消除了它 2 个自由度。
还有一种不须你创建的接触约束,一个防止刚体穿透,以及用于模拟摩擦和恢复的特殊约束。
6.世界
世界是遵循物理的空间,以上的所有都存在于世界中,可以创建多个世界,但很少这样用
创建世界需要两个步骤,一是生成重力向量,二是根据重力生成世界对象
//生成重力向量
b2Vec2 gravity;
gravity.Set(0.0f, -10.0f);
//生成世界对象
bool doSleep = true;
world = new b2World(gravity);
world->SetAllowSleeping(doSleep);
world->SetContinuousPhysics(true);
分享到:
相关推荐
《cocos2d-x与Box2D:构建基础物理引擎》 在游戏开发领域,物理引擎扮演着至关重要的角色,它赋予游戏中的对象以真实世界中的运动规律,从而增加游戏的真实感和趣味性。cocos2d-x是一个流行的开源2D游戏开发框架,...
《cocos2d-x 3.8:经典游戏引擎源码解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这...
同时,Cocos2d-x集成了Box2D物理引擎,使开发者能轻松实现物理效果,如碰撞检测、重力模拟等。 游戏中的音频管理也是不可或缺的一环。本书会介绍Cocos2d-x的音频API,包括音乐播放、音效处理以及音效资源的加载和...
同时,cocos2d-x还集成了物理引擎Box2D,使得游戏中的物体运动和碰撞处理变得更加真实。 下载“cocos2d-x-cocos2d-x-2.2.2.zip”后,你需要运行“download-deps.py”脚本来下载依赖库。这个脚本会自动处理安装过程...
Cocos2d-x教程视频Cocos2d-x功能扩展-Cocos2d-x Box2d物理引擎实战开发提取方式是百度网盘分享地址
《Cocos2d-x实战:C++卷(2版)源代码》这本书是关于使用Cocos2d-x游戏引擎进行游戏开发的专业指南。Cocos2d-x是一个开源的、跨平台的游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言...
1. **跨平台支持**:Cocos2d-x 3.1支持多种操作系统和设备,包括iOS、Android、Windows、Mac、Linux等,使得开发者可以编写一次代码,到处运行。 2. **C++基础**:Cocos2d-x主要采用C++作为编程语言,同时也支持Lua...
《Cocos2d-x实战C++卷》是关东升所著的一本深入探讨Cocos2d-x游戏引擎开发的专业书籍。Cocos2d-x是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言为主要编程...
在游戏开发领域,cocos2d-x是一款广泛使用的开源2D游戏引擎,尤其在移动平台上的应用非常广泛。cocos2d-x 3.0版本带来了许多性能优化和新特性,使得开发者能够更高效地创建游戏。本篇文章将深入探讨cocos2d-x 3.0中...
3. **物理引擎**:介绍Cocos2d-x内置的Box2D物理引擎,用于模拟游戏中的碰撞检测和物理行为。 4. **事件处理**:讲解如何处理用户输入、触摸事件以及游戏内的各种交互事件。 5. **游戏逻辑**:通过实例解析如何...
Cocos2d-x的物理引擎如Box2D的使用,可以帮助开发者实现真实的物理效果,如重力、碰撞反弹等。同时,Lua的模块化特性使得游戏代码组织有序,易于维护。 游戏性能优化也是本书不可或缺的一部分,包括内存管理、渲染...
4. **物理引擎**:了解Cocos2d-x内置的Box2D或Chipmunk物理引擎,如何模拟真实世界的物理行为,如碰撞检测和重力。 5. **事件处理**:掌握事件监听和响应机制,包括触摸事件、键盘事件以及自定义事件的处理,实现...
cocos2d-x 是基于cocos2d-xna的一个C++实现,它继承了cocos2d的优秀特性,并且引入了C++语言,提高了代码的可读性和可维护性。这个框架提供了一整套游戏开发工具,包括场景管理、精灵、动画、物理引擎、粒子系统、...
cocos2d-x集成了Box2D物理引擎,可以实现真实感的物理效果,如重力、碰撞等。 4. **地图编辑器与Tiled Map**:为了构建三国时期的战场,开发者可能会使用Tiled Map格式来设计地图。Tiled Map允许创建复杂的多层地图...
1. **cocos2d-x框架介绍**:cocos2d-x提供了丰富的图形渲染、动画、物理引擎、音频处理、粒子系统等功能,使得开发者能够快速构建2D游戏。它采用了面向对象的设计,使得代码结构清晰,易于维护。 2. **跨平台开发**...
在移动游戏开发领域,cocos2d-x是一款广受欢迎的开源2D游戏引擎,它基于C++,支持iOS、Android以及其他多种平台。本文将深入探讨如何利用cocos2d-x开发一款跑酷游戏,通过分析提供的“runningGame”源码,我们将揭示...
在cocos2d-x中,我们可以利用物理引擎如Box2D或 Chipmunk进行复杂的碰撞检测,也可以使用简单的矩形碰撞检测函数如`cc.rectIntersectsRect()`来检查两个矩形是否相交。此外,cocos2d-x还支持自定义的碰撞检测算法,...
5. **动画与物理引擎**:Cocos2d-x提供了强大的动画支持和Box2D物理引擎,源码将展示如何用Lua编写复杂的动画序列,以及如何实现物理效果,如碰撞检测、重力等。 6. **游戏逻辑**:通过实际的游戏逻辑代码,可以...
《Cocos2d-x游戏引擎实战开发炸弹超人》是一个基于Cocos2d-x框架的2D游戏开发教程,旨在帮助开发者深入理解并熟练运用这一强大的游戏引擎。Cocos2d-x是一个开源、跨平台的2D游戏开发工具,它支持iOS、Android、...
cocos2d-x内置了Box2D物理引擎,可以用来模拟现实世界的物理效果,如重力、碰撞检测等。这对于制作具有真实感的游戏至关重要。 ### 三、cocos2d-x应用场景 cocos2d-x适用于各种类型的2D游戏开发,无论是简单的休闲...