物理引擎简介——Cocos2d-x学习历程(十三)
Box2D引擎简介
Box2D是与Cocos2d-x一起发布的一套开源物理引擎,也是Cocos2d-x游戏需要使用物理引擎时的首选。二者同样提供C++开发接口,所使用的坐标系也一致,因此Box2D与Cocos2d-x几乎可以做到无缝对接。
Box2D是一套基于刚体模拟的物理引擎,它的核心概念为世界、物体、形状、约束和关节。
Box2D的各个组件及其描述如下:
世界(b2World):一个物理世界。物理世界就是物体、形状和约束相互作用的集合。Box2D允许在同一程序中创建多个世界,但通常这是不必要的。
物体(b2Body):物理引擎。
夹具(b2Fixture):一种用于把形状附加到物体之上的关系。我们利用形状创建夹具,再把夹具附加到物体之上,从而使得物体拥有碰撞的能力。
形状(b2Shape):物体的形状。一个严格依附于物体的2D碰撞集合结构,具有摩擦(friction)和恢复(restitution)等材料性质。
约束:约束,就是消除物体自由度的物理连接。在2D世界中,一个物体有X方向、Y方向和旋转角度3个自由度。如果我们把一个物体钉在墙上(如同一个摆锤),那就把它约束到了墙上。此时,此物体就只能绕着这个钉子旋转,所有这个约束就消除了它的3个自由度。
关节(b2Join):一种用于把两个或多个物体固定到一起的约束。Box2D支持的关节类型有旋转、棱柱和距离等。可以限制一个关节的活动范围,可以通过关节驱动所连接物体的转动。
为了实现一个物理场景,我们需要做的是创建一个世界,然后创建我们需要的物体,设置好它的形状和其他属性,将其添加到世界当中,然后周期性地更新这个世界,那么Box2D就会为我们高效且出色地完成模拟物理运动的任务。
值得注意的是,Box2D仅仅更新它所管理的物理模型的位置和速度等信息。在游戏中,我们想要做的通常是赋予精灵物理性质,我们会为精灵创建Box2D物理模型,然后物理引擎运作起来后,为了把物理模型的运动体现在屏幕上,我们必须手动把物理模型的数据同步到精灵中。
最新文章
- [spring源码学习]五-BeanPostProcessor的使用
- 让树莓派开机发送自己的ip到邮箱
- mybatis的物理分页:mybatis-paginator
- Scala中的Apply
- SQL 语句集合
- BZOJ 4723 Flappy Bird
- Android应用源码基于安卓的校园二手交易系统客户端+服务端+数据库
- NDK开发之日志打印
- tp框架实现文件上传
- Linux Tomcat安装,Linux配置Tomcat,Linux Tomcat修改内存,Linux tomcat修改端口
- WebService基础学习(三)—CXF
- 【转】 awk 学习笔记
- 基于Ado.Net的日志组件
- JavaScript 之存取器属性
- UWP: 妙用自定义 Action 以简化并重用代码
- linux把文件压缩成.tar.gz的命令
- (转)JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用
- [IR] What is XML
- Jersey RESTful WebService框架学习(八)maven搭建
- ubuntu16.4+nginx+uwsgi+Django 部署上线
热门文章
- crm使用soap创建下拉框
- grep 和 sed:linux经常使用工具 &;amp; 基本正則表達式
- 【Android】Android实现截取当前屏幕图片并保存至SDCard
- C#6 冒泡 折半查找 二维数组
- Pascal's Triangle,Pascal's Triangle II
- 接触CrackMe 第一个
- 开发环境配置--Ubuntu+Qt4+OpenCV(三)
- 【译】Optimize caching-缓存优化
- 自定义HTTP错误页太小,导致显示默认友好错误页问题
- Android技术宅:自制USB OTG数据线