文档章节

Box2D和Chipmunk的一些对比

djy2130
 djy2130
发布于 2017/03/24 16:10
字数 649
阅读 14
收藏 0

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);来完成的

© 著作权归作者所有

共有 人打赏支持
djy2130
粉丝 0
博文 5
码字总数 2083
作品 0
广州
程序员
Visual Studio 2012下Box2D开发环境设置

Cocos2d-x 3.x默认情况下采用的物理引擎是Chipmunk,如果我们要使用Box2D引擎,需要进行一些设置和调整,而且不同的开发平台下这些设置也有所不同。由于本书在此之前介绍的都是基于微软的Vis...

智捷课堂
2014/10/07
0
0
记录,cocos2d-x 安装

Last login: Tue Sep 4 09:14:53 on console wucy:~ wucy$ java -version java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11D2001) Java HotSpot(TM) 64......

扶殊88
2012/09/08
0
0
使用Doxygen来生成Box2d的API文档

对于Doxygen以前只听别人说过,而现在使用它也是一个偶然,缘分吧。前两天看box2d的官方sdk中,发现他有用户手册却没有说明,只是留下了一个Doxygen的文件。事情告一段落,然后今天在看box2d...

阳666
2015/11/21
0
0
【cocos2d-x 手机游戏开发】在VS2005下运行Cocos2d-x

Cocos2d-x的开发包中并未给出VS2005的工程文件。不巧我的电脑中只装了VS2005。学习心切,这可怎么办啊?没关系。只要您稍花点时间,也可以让Cocos2d-x在VS2005中运行起来。 首先。将cocos2d...

appdevsdk
2013/03/01
0
0
Box2d系列 – 如何在cocos2d-x中激活 debug draw(转)

本文的读者要求是, 熟悉cocos2d-x流程, 熟悉box2d的基本代码。 很久没写cocos2dx的东西了,最近比赛接近,做题太郁闷就练习下使用box2d,好歹也发时间看完了官方文档的。。 本来很想发时间...

睡到自然醒
2012/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java IO类库之PrintStreamWriter

* A <code>PrintStream</code> adds functionality to another output stream, * namely the ability to print representations of various data values * conveniently. Two other fea......

老韭菜
49分钟前
0
0
qduoj~前端~二次开发~笔记

青岛大学qdu的onlinejudge是js的写的前端,框架是vue.js,在nodejs上部署运行,其实整体运行还是建立在docker的容器虚拟环境里,这里暂时不需要docker。安装环境是Ubuntu14-64bit 1.安装一大...

虚拟世界的懒猫
53分钟前
6
0
ConcurrentHashMap源码解读

部分内容转自:http://jiabinyuan.xyz/#/app/archive/detail/25 内部结构 内部采用了segment结构,每一个segment相当于一个hashtable。看下面的结构图: 从图的结构我们可以了解到,Concurr...

edwardGe
58分钟前
1
0
Ubuntu终端Tab键自动补全

打开 /etc/bash.bashrc,找到下列代码,取消注释。 #enable bash completion in interactive shells#if ! shopt -oq posix; then# if [-f /usr/share/bash-completion/bash_compl......

大熊猫
今天
0
0
polipo socks5代理转http代理

天朝的网络,哎~ 装个 yarn 都时而会卡 假设在SSlocal 已经装好运行的前提下,来安装设置 polipo sudo apt-get install polipo sudo vim /etc/polipo/config 追加下列配置内容,并保存 socksP...

纯洁徐
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部