cocos2d-x初探学习笔记(20)--物理引擎box2d(2)
小满(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)相关推荐
- three.js学习笔记(十)——物理引擎
我们可以利用数学函数和一些解决方案像RayCaster来实现自己的物理效果,但是如果需求更加真实的物理效果,像是物体张力.摩擦力.拉伸.反弹等真实物理效果,最好使用外部库 原理 我们会创建一个Thre ...
- Hadoop学习笔记—20.网站日志分析项目案例(一)项目介绍
Hadoop学习笔记-20.网站日志分析项目案例(一)项目介绍 网站日志分析项目案例(一)项目介绍:当前页面 网站日志分析项目案例(二)数据清洗:http://www.cnblogs.com/edis ...
- Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法
Ext.Net学习笔记20:Ext.Net FormPanel 复杂用法 在上一篇笔记中我们介绍了Ext.Net的简单用法,并创建了一个简单的登录表单.今天我们将看一下如何更好是使用FormPanel ...
- 2020-4-20 深度学习笔记20 - 深度生成模型 3 (实值数据上的玻尔兹曼机)
第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...
- 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)
第二十章 深度生成模型 Deep Generative Models 中文 英文 2020-4-17 深度学习笔记20 - 深度生成模型 1 (玻尔兹曼机,受限玻尔兹曼机RBM) 2020-4-18 ...
- 阿里云学习笔记——设置规则引擎(2)
标题阿里云学习笔记--设置规则引擎(2) 下面是我自己作为学习笔记分享,大神勿喷,如有叙述错误的地方欢迎指正. 1.定义Topic 定义了p_data和s_data 2.创建规则引擎,这里创建了APP ...
- 编译原理学习笔记20——符号表
编译原理学习笔记20--符号表 20.1 符号表的组织与操作 20.2 符号表的内容 20.3 利用符号表分析名字的作用域 20.1 符号表的组织与操作 符号表 符号表的作用与组织 符号表的整理和查找 ...
- 小猫爪:S32K3学习笔记20:S32K3之SCST及其应用
小猫爪:S32K3学习笔记20:S32K3之SCST及其应用 1 前言 2 SCST简介 3 移植 4 应用 4.1 启动测试 4.2 使能FPU相关测试项 4.3 49号测试项中的MPU配置 4.4 ...
- VUE,使用物理引擎Box2D设计类愤怒小鸟的击球游戏--基本架构设置
我们都玩过愤怒的小鸟,该游戏一大特点是,两物体碰撞后,它会模拟现实世界物体碰撞后的反弹效果,因此游戏特别具有体感和逼真感,本节我们利用物理引擎Box2D,制作一个类似愤怒小鸟类型的碰撞游戏. 游戏的基 ...
最新文章
- TP5部署服务器问题总结
- ubuntu编译内核重启出现:gave up waiting for root device
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(四)代码简化
- selenium3 + python - cookie定位
- Android之事件分发机制
- phoenix的元数据一般存在哪里_ElasticSearch文档元数据(Metadata)
- 各种排序算法总结及C#代码实现
- 从汇编代码的角度观察switch与if...else,乘除与移位的差别
- win10 没有计算机策略,Win10家庭版找不到组策略gpedit.msc的解决方法
- go fyne 跨平台开发框架 gui 编程 抖音下载 去水印编程 学习交流
- 做好加密手机 任重而道远
- 我们这么努力到底为了什么
- NVIDIA Jetson Xavier NX 刷机方法(sdk manager)
- 使用hibernate映射oracle两个表空间的表,Hibernate每个具体类一张表映射(使用XML)
- international journal of remote sensing投稿经历给我的感悟
- 【洛谷】P1830 轰炸III 题解 代码+详解
- matlab 积分 例子,[Matlab]使用arrayfun对矩阵表达式积分的例子
- python中什么叫函数_Python中的函数
- 《老炮儿》的江湖道义就是互联网创业的规矩?
- java 微信分享实现_java实现微信分享
热门文章
- 反射_Class对象功能_获取Method
- thymeleaf体验
- SpringBoot_入门-HelloWorld细节-自动配置
- Docker 常见问题汇总
- oracle解析select,oracle_select语句例子解析
- 安卓吸顶+下拉放大_Android自定义scrollView实现顶部图片下拉放大
- MariaDB数据库日志
- 利用HttpClient 获取网页数据java代码模版
- 切换控制器的三种手段push modal 切换window的rootViewController
- 使用Dezender对zend加密后的php文件进行解密