文档章节

Box2D和Chipmunk的一些对比

djy2130
 djy2130
发布于 2017/03/24 16:10
字数 649
阅读 15
收藏 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
开源的物理引擎

物理引擎 是一种仿真程序,可用来创建一种虚拟环境,在其中集成来自物理世界的规律。在这个虚拟的环境中包括的物体,除了物体之间的相互作用(比如碰撞)外,还包括施加到它们身上的力(比如...

小卒过河
2011/09/07
2.1K
0
cocos2d-X学习之引擎源码目录结构介绍

Cocos2d-x的目录结构如下: 目录的具体结构介绍如下: Box2D:物理引擎Box2D的相关源文件 Chipmunk:物理引擎chipmunk的相关源文件 cocos2dx:cocos2d-x引擎的核心部分,存放了引擎的大部分源...

长平狐
2012/08/29
1K
0
【cocos2d-x 手机游戏开发】在VS2005下运行Cocos2d-x

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

appdevsdk
2013/03/01
0
0
【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法

上一节讲述了粒子的相关问题,当然啦,不示弱,今天继续将物理系统给大家进行简单的介绍和讲述; 首先先介绍,如何在cocos2d中加入box2d开发lib包,因为一般使用cocos2d引擎进行开发游戏时,...

junwong
2012/03/02
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Nextjs+React非页面组件SSR渲染

@随风溜达的向日葵 Nextjs Nextjs是React生态中非常受欢迎的SSR(server side render——服务端渲染)框架,只需要几个步骤就可以搭建一个支持SSR的工程(_Nextjs_的快速搭建见Next.js入门)...

随风溜达的向日葵
52分钟前
0
0
如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
3
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
6
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
4
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部