小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man

由于box2d的内容比较多,它也有自己的testbed例子,所以关于比较深入的box2d引擎内容,我准备单开一个专题去研究它的testbed例子,当然,是嵌入到我们的cocos2d中的testbed,因为box2d本身就是用C++编写的,所以区别不是很大。

首先看一下box2dtest这个例子,这个例子相对简单

就是可以点击屏幕,在屏幕中生成方块,然后方块之间有碰撞,就这么简单,但是带出了整个cocos2d-x的框架。

第一步当然是构建整个世界,正如上一节所说的,建立重力,通过重力构建生成世界,当然,这也是使用这个引擎new构建为数不多地方,因为有世界才有一切

第二步就是构建地面及墙壁,这里面的做法略有不同,因为要构建一个空心的物体,因此我们不能直接定义,而是分别定义长方体里的四个边。

另外一个需要注意的地方就是我们进行了长度的转换,由于box2d采取的现实世界的米作为计量长度的单位,这里要注意的是长度范围在0.1m到10m范围内的物体模拟的效果更好,所以我们要把我们的像素级的长度单位转换为米的单位就要除以PTM_RATIO(定义32像素为1米)。

需要说明的是,这里我对例子进行了修改,例子是以屏幕的中心为锚点,而我,是以原点为锚点的,我觉得这样更好理解。

之后使用批处理精灵类管理所有的盒子,先生成格子的定义,在通过定义生成物体

可以看到类型是动态刚体,另外值得注意的就是用userData这个参数保留了我们的对象,从而完成了对象和刚体的绑定

之后再绑定形状,先生成形状,在通过关联来绑定形状

在初始化方法里调用scheduleUpdate()使得模拟出每个时间步更新,并在update中进行更新,如下图所示。Box2d是通过定期调用step来更新动画的,step的第一个参数是时间步,这里我进行了修改,因为dt会不同,所以不建议用dt来作为时间步,而要给他一个固定的时间步这样才不会显得动画时快时慢,第二个参数是速度迭代次数,推荐8次,超过10次的基本看不出效果的提升,第三个参数是位置迭代,这个1次就行,底下的步骤就是遍历整个世界,找出对应精灵的刚体,进行位置更新就可以了

关于物理引擎的深入研究,我想再开一个系列的文章来单独谈,因为这个的例子写的也很好,对不同类型游戏的开发都很有用

刚开始研究此引擎,如有错误之处,希望大家多多指正

下一篇打算写精灵类的深入研究

cocos2d-x初探学习笔记(20)--物理引擎box2d(2)相关推荐

  1. three.js学习笔记(十)——物理引擎

    我们可以利用数学函数和一些解决方案像RayCaster来实现自己的物理效果,但是如果需求更加真实的物理效果,像是物体张力.摩擦力.拉伸.反弹等真实物理效果,最好使用外部库 原理 我们会创建一个Thre ...

  2. Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍

    Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...

  3. Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法

    Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法 在上一篇笔记中我们介绍了Ext.Net的简单用法,并创建了一个简单的登录表单.今天我们将看一下如何更好是使用FormPanel ...

  4. 2020-4-20 深度学习笔记20 - 深度生成模型 3 (实值数据上的玻尔兹曼机)

    第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...

  5. 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)

    第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...

  6. 阿里云学习笔记——设置规则引擎(2)

    标题阿里云学习笔记--设置规则引擎(2) 下面是我自己作为学习笔记分享,大神勿喷,如有叙述错误的地方欢迎指正. 1.定义Topic 定义了p_data和s_data 2.创建规则引擎,这里创建了APP ...

  7. 编译原理学习笔记20——符号表

    编译原理学习笔记20--符号表 20.1 符号表的组织与操作 20.2 符号表的内容 20.3 利用符号表分析名字的作用域 20.1 符号表的组织与操作 符号表 符号表的作用与组织 符号表的整理和查找 ...

  8. 小猫爪:S32K3学习笔记20:S32K3之SCST及其应用

    小猫爪:S32K3学习笔记20:S32K3之SCST及其应用 1 前言 2 SCST简介 3 移植 4 应用 4.1 启动测试 4.2 使能FPU相关测试项 4.3 49号测试项中的MPU配置 4.4 ...

  9. VUE,使用物理引擎Box2D设计类愤怒小鸟的击球游戏--基本架构设置

    我们都玩过愤怒的小鸟,该游戏一大特点是,两物体碰撞后,它会模拟现实世界物体碰撞后的反弹效果,因此游戏特别具有体感和逼真感,本节我们利用物理引擎Box2D,制作一个类似愤怒小鸟类型的碰撞游戏. 游戏的基 ...

最新文章

  1. TP5部署服务器问题总结
  2. ubuntu编译内核重启出现:gave up waiting for root device
  3. Spring+SpringMVC+MyBatis+easyUI整合基础篇(四)代码简化
  4. selenium3 + python - cookie定位
  5. Android之事件分发机制
  6. phoenix的元数据一般存在哪里_ElasticSearch文档元数据(Metadata)
  7. 各种排序算法总结及C#代码实现
  8. 从汇编代码的角度观察switch与if...else,乘除与移位的差别
  9. win10 没有计算机策略,Win10家庭版找不到组策略gpedit.msc的解决方法
  10. go fyne 跨平台开发框架 gui 编程 抖音下载 去水印编程 学习交流
  11. 做好加密手机 任重而道远
  12. 我们这么努力到底为了什么
  13. NVIDIA Jetson Xavier NX 刷机方法(sdk manager)
  14. 使用hibernate映射oracle两个表空间的表,Hibernate每个具体类一张表映射(使用XML)
  15. international journal of remote sensing投稿经历给我的感悟
  16. 【洛谷】P1830 轰炸III 题解 代码+详解
  17. matlab 积分 例子,[Matlab]使用arrayfun对矩阵表达式积分的例子
  18. python中什么叫函数_Python中的函数
  19. 《老炮儿》的江湖道义就是互联网创业的规矩?
  20. java 微信分享实现_java实现微信分享

热门文章

  1. 反射_Class对象功能_获取Method
  2. thymeleaf体验
  3. SpringBoot_入门-HelloWorld细节-自动配置
  4. Docker 常见问题汇总
  5. oracle解析select,oracle_select语句例子解析
  6. 安卓吸顶+下拉放大_Android自定义scrollView实现顶部图片下拉放大
  7. MariaDB数据库日志
  8. 利用HttpClient 获取网页数据java代码模版
  9. 切换控制器的三种手段push modal 切换window的rootViewController
  10. 使用Dezender对zend加密后的php文件进行解密