Box2D和Chipmunk的一些对比
博客专区 > djy2130 的博客 > 博客详情
Box2D和Chipmunk的一些对比
djy2130 发表于1年前
Box2D和Chipmunk的一些对比
  • 发表于 1年前
  • 阅读 10
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

Box2D更重,Chipmunk更轻量级

Box2D的类是

  • b2World:运行在游戏里的物理世界,是所有有物理表现的物体的容器,负责遍历和更新。
  • b2BodyDef:刚体定义,表示刚体的物理特性和参数,比如是静态还是动态,加速度角速度等等,主要用于创建b2Body。
  • b2Body:刚体,在世界内创建的刚体。
  • b2Shape:表示刚体的形状的,b2Shape只是基类,它的子类目前包括ChainShape、CircleShape、EdgeShape、PolygonShape等分别实现了多边形、三角形、球等形状。主要的用处是通过b2Body的CreateFixture接口来为刚体b2Body创建外形,要注意的是目前Box2D是无法创建空心球体的,只能通过多边形来近似模拟空心圆。
  • b2FixureDef:定义形状的,表示刚体形状的具体物理特性,比如摩擦力、密度、弹性等等,主要是用于创建形状的。

Chipmunk的类是

  • space: 发生物理模拟的空间,可容纳body, shape,joint
  • body:刚体,可被赋予shape。刚体具有质量,转动惯量,位置,线性速度,加速度,角度,角速度,角加速度等属性。刚体之间可通过joint连接
  • shape:决定刚体的碰撞外形。一个刚体上可覆盖上多个shape,同属于一个刚体的shape不会互相发生碰撞。shape同样需要加到space中。有圆,线段,凸多边形这三种shape类型。
  • joint: 用于连接刚体。有4种类型:
    1. pin joint: 相当于一根棍子(质量忽略)加两个大头针(锚点),两个刚体如果用pin joint连接,他们之间的距离不会改变,他们各自可绕锚点转动(如果有力矩的话)
    2. slide joint: 相当于把pin joint的棍子换成了滑槽。这个滑槽有最大和最小长度。
    3. pivot joint: 即一个旋转轴。两个刚体都绕这个轴旋转
    4. groove joint:相当于可滑动的pivot joint。将刚体2的旋转轴挂到处于刚体1的一段滑槽上。

在Box2D的世界里,世界的大小是通过”米”来衡量的,从像素点到米的需要转换 Chipmunk中不需要将像素转换成米,而是直接使用像素大小来表示

碰撞比较复杂 Box2D的碰撞检测是通过b2ContactListenner来实现的,如果你想接受来自碰撞的回调,你需要创建一个继承自b2ContactListener的新类

Chipmunk的碰撞是通过函数cpSpaceAddCollisionHandler(space,defaultCollisionType,defaultCollisionType, &contactBegin, NULL, NULL, &contactEnd, NULL);来完成的

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 5
码字总数 2083
×
djy2130
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: