11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2544|回复: 0
上一主题 下一主题

[2D 物理引擎] 【9RIA—ladeng6666】—【Box2D系列教程 1】认识Box2D世界

[复制链接] TA的其它主题
发表于 2018-2-5 15:06:25 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 TKCB 于 2018-2-5 15:37 编辑

转载:9RIA游戏开发者社区(天地会)
作者:ladeng6666(拉登大叔)

作者博客:http://www.ladeng6666.com/blog/


【Box2D系列教程-导航帖】—拉登大叔出品(总贴)


前两天,emanueleferonato在它的博客6周岁之际,发布了自己的Top文章,其中有7篇是关于Box2D的,由此可见Box2D的市场需求是很大的。

作为专业的AS3游戏业余爱好者,我义不容辞的开始学习Box2D,希望能跟大家共同进步。

其实Box2D的教程已经很多了,不过对于我这个菜鸟来说,看着看着就困了,还是按照我菜鸟思路来吧。

首先认识一下Box2D世界——b2world。

b2world是Box2D系统模拟物理世界的核心,可以想象成我们的地球。

地球上有各种不同的物理环境,如水中漂浮的小船,太空中失重的宇航员等等。同样在Box2D世界中也要有一个环境,这在Box2D中用b2AABB类表示,如下:
[Actionscript3] 纯文本查看 复制代码
var b2AB:b2AABB = new b2AABB();

PS:在《Advanced game design with flash》中说过AABB是指Axis-Align-Bounding-Boxes.

现实中的世界是无穷无尽的,但是我们看到的是有限的,所以Box2D中也要限制一下环境的大小,因为我们看到的是有限的嘛!我猜你可能跟我一样,提到到大小想到的是肯定width和height,而Box2D中的大小是通过设置两个对角顶点upperBound和lowerBound实现的,如下图:

b2AABB.jpg
代码如下:
[Actionscript3] 纯文本查看 复制代码
b2AB.lowerBound.Set( -100, -100);
b2AB.upperBound.Set( 100, 100);

环境设置好了,重力也是少不了的,否则我们就都飘在空中了。同样,Box2D世界中也少不了:
[Actionscript3] 纯文本查看 复制代码
var gravity:b2Vec2 = new b2Vec2(0, 10);

Box2D毕竟只是个物理引擎,我们也要考虑到效率问题,所以对于静止不懂的对象,最好是不要进行模拟计算,节省CPU开支,这种静止的对象在Box2D中叫做”睡着了”哈哈。
[Actionscript3] 纯文本查看 复制代码
var doSleep:Boolean = true;

这样,环境变量设置好后,就可以new出一个Box2D世界了。
[Actionscript3] 纯文本查看 复制代码
var world:b2World = new b2World(b2AB,gravity, doSleep);

但是舞台上还是什么都没有啊!别着急。牛顿不也是因为有苹果在发现的万有引力嘛!我们什么对象都没添加,肯定没有效果啦!

下一节,我们将学习苹果的制作方法!


Box2D 2.0.1类库下载!
Box2D Version 2.0.1.zip (334.71 KB, 下载次数: 14)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表