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

原创 2012年02月06日 21:10:37

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

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

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


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


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

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

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

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



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


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

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


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


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

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

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



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

开始写下自己的python的cocos2d, pyglet学习

我想很多做程序的,都会想去写一下游戏,最近自己无聊,就去研究了一下cocos2d,好多版本,用cocos2d-x用的是c++,还要装那个宠大的visual studio...算,放弃, 又没有mac的...

一 手游开发工具cocos2d-x editor初识

cocos2dx editor是开发跨平台的手机游戏工具 运行window和mac系统上,javascript脚本语言,基于cocos2d-x跨平台游戏引擎, 集合代码编辑,场景设计,动画制作,字体设...

Cocos2d-x学习(十九):iOS6中无法正常游戏横屏的解决方案

转载地址:http://www.himigame.com/iphone-cocos2dx/1000.html 1.先在项目的ios目录下的AppController.mm文件中的 - (B...

Cocos2d-x如何控制动作速度

基本动作和组合动作实现了针对精灵的各种运动和动画效果的改变。但这样的改变速度匀速的、线性的。通过ActionEase及其的派生类和Speed 类我们可以使精灵以非匀速或非线性速度运动,这样看起了效果更...

Cocos2d-x 程序是如何开始运行与结束的

题记:对于技术,我们大可不必挖得那么深,但一定要具备可以挖得很深的能力   问题的由来   怎么样使用 Cocos2d-x 快速开发游戏,方法很简单,你可以看看其自带的例程,或...

cocos2d-x初探学习笔记(21)--精灵类

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 在游戏中还有一个比较重要的元素,那就...

cocos2d-x 学习笔记1

helloworld  基础篇(本人初学,未免很多不足,希望多给予批评)       首先 安装及配置就不细说了,网上有很多参考。先来说说目录结构 resource ,libs ,Classes ,...

制作一个简单的Android版的音乐播放器

音乐播放器是一个非常常见的应用,这篇博客就是介绍如何制作一个简单的音乐播放器,这款音乐播放器具有以下的功能:播放歌曲、暂停播放歌曲、、显示歌曲的总时长、显示歌曲的当前播放时长、调节滑块可以将歌曲调节到...

cocos2d-x初探学习笔记(4)--触屏事件

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 1.场景触屏 一般在菜单中,不是继承自...

cocos2d-js 界面优化

测试环境: iphone4、iOS6.1.2、chrome 37.2062.60,Cocos2d-js 3.6   之前写了不少,实际项目也按这个去优化了,也有效果,但到最后才发现,尼玛,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)