APE 物理引擎与 Box2D 物理引擎对比

初学Box2D ,有几个心得

1.贴图。
在 APE 中,不给粒子贴图,会有默认的白色粒子。如果要贴图,只要一个setDisplay 函数,就会用贴图代替默认的白色贴图。

而 Box2D 压根儿没有贴图的概念。可以这么认为,Box2D 只负责数据的处理。往 box2D 的世界中输入各种数据,比如粒子大小,位置,摩擦力,重力等等,每一帧,box2D 都会返回给你每个物体的坐标,角度等等(注意返回的只是数据)。
然后我们每一帧赋予贴图相应的坐标,角度,让他们动起来。实际上引擎纯粹在计算数据。然后我们操作数据。比APE 抽象吧。(可能我讲的比较抽象)
2.定义粒子
Box2D 粒子的设置比较麻烦,要设置 粒子的 基本定义(位置,角度,userData ),形状定义(粒子的形状,大小,质量,密度等等)。基本定义用 body = world.CreateBody(bodyDef); 这种语句赋值给粒子,而形状定义则用 body.CreateShape(boxDef); 这种语句赋值,很繁琐。
APE 的粒子,只要在类的构造函数中赋予各种属性可以生成。
3.粒子的动态和静态
Box2D 中粒子有动态粒子和静态粒子之分,即物体是否固定。质量为 0 的粒子是静态(默认质量都为0,所以粒子默认都为静态),质量大于 0 的粒子是动态。
APE 可以直接设置物体的静态属性。
4.单位
Box2D 是用 “米” 做单位的,一米等于 30 像素(奇怪的比例)。要时不时的进行单位转换。

APE 以像素做单位。
5.碰撞检测
Box2D 的碰撞检测要继承一个类。这个类可以返回碰撞的位置,碰撞的双方等等。
具体的方法在http://www.box2d.org/wiki/index.php?title=Listening_to_contact_events_in_Box2D_AS3
(上面的 wiki 还有几个教程,很不错。)
APE 有专门碰撞检测的类。
6.拖拽
Box2D 的拖拽要用到 b2MouseJoint 类。源码在 http://dl.getdropbox.com/u/1249798/Test.zip
APE 的拖拽很简单,侦听鼠标事件,设置鼠标事件的 target 跟随鼠标移动就可以。
其他概念
Box2D 有个模拟范围的概念。物体在模拟范围内才有物理性质。文档里面说这个范围越大越好。这个功能我觉的挺有用的。可以实现多个物理世界并存。

还有休眠的概念。如果物体静止。如果休眠属性 为 true ,那么当物体静止时就自动进入休眠,以节约CPU 资源。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值