Box2D中的概念
来源:互联网 发布:北京中关村软件培训 编辑:程序博客网 时间:2024/06/05 04:21
cocos2d-x引擎支持两个物理引擎,分别为Box2D和Chipmunk。通常使用为Box2D。以下为Box2D中的概念。世界(World), 刚体(body)、刚体定义(BodyDef)、关联(Fixture),关联定义(FixtureDef)、形状(Shape)、连接(Joint)、以及链接定义(JointDef)。
1世界:
创建世界需要两个步骤:1、生成重力向量。2、根据重力向量生成对象。例如:
//生成一个重力向量
b2Vec2 gravity;
gravity.Set(0.0f,-10.0f);
//根据重力向量生成世界对象
b2World *world = new b2World(gravity,true);
2刚体及刚体定义:
刚体代表一个质点,因此它只有位置,没有大小。刚体分为三类:
1、静态刚体(Static Body)。没有质量、没有速度。绝对静止。
2、棱柱刚体(Prismatic Body)。没有质量,但可以有速度。引擎会根据速度计算并更新它的位置。
3、动态刚体(Dynamic Body)。可以有质量、可以有速度。最常用的刚体。
与世界类似刚体定义也分为两步:1、创建刚体定义。2、根据缸体定义生成刚体。eg:
//生成刚体定义
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0,0);
//根据刚体定义生成刚体
b2Body *groundBody = world->CreateBody(&groundBodyDef);
3形状:
形状通过关联附加到刚体上,刚体就具有了视觉上的外形。刚体可以有多个关联,因此也就可以有多个形状,Box2D称为组合形状(compound Shapes),这样可以构成更复杂的形状。eg:
b2PolygonShape dynamicBox;
dynamicBox.SetAsBox(0.5f,0.5f);
4关联及关联定义:
创建关联:1、创建关联定义。2、通过世界相关方法创建关联。eg:
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
fixtureDef.dynsity = 1.0f;
fixtureDef.friction = 3.0f;
//根据关联定义生成关联
b2Fixture *fixture = body->CreateFixtrue(&fixtureDef);
5链接及链接定义:
链接用来联系多个刚体,使他们产生相互影响。链接有很多类型,必须选择你需要的相应类型。同样两个步骤:1、定义。2、根据定义创建。eg:
b2LineJointDef jointDef;
b2Vec2 axis(2.0f,1.0f);
axis.Normalize();
jointDef.Initialize(ground,body,b2Vec2(0.0f,8.5f),axis);
jointDef.motorSpeed = 0.0f;
jointDef.maxMotorForce = 100.0f;
jointDef.enableMotor = true;
jointDef.lowerTransltaion = -4.0f;
jointDef.upperTranslation = 4.0f;
jointDef.enableLimit = true;
//根据链接定义生成链接
b2Joint *joint = m_world->CreateJoint(&jointDef);
- Box2D中的概念
- [Box2D]一.基础概念
- cocos2dx box2d 概念
- 【COCOS2DX-BOX2D游戏开发之一】Box2d概念
- COCOS2DX-BOX2D游戏开发 Box2d概念详解
- cocos2dx中的box2d
- Box2D 中的 PTM_RATIO
- box2d中的连接器马达
- Box2D中的距离计算
- Box2D的一些概念和笔记
- Box2D中的b2DebugDraw使用示例
- Box2D中的b2DebugDraw使用示例
- Box2D中的b2DebugDraw使用示例
- cocos中的Box2d物理引擎
- box2d 在lua中的运用(Box2D物理引擎)
- Box2D
- Box2D
- box2d
- 重载运算符 ++ 和 --
- C++ 多态 解析
- OCP-1Z0-053-V12.02-591题
- 国家对五险一金的交纳说明
- Java与Android很实用的技术
- Box2D中的概念
- 文件及文件夹操作
- Ubuntu12.04下安装、使用、卸载MySQL
- Spring AOP + 事物
- void main与int main之间的区别是什么?
- C++ AMP: restrict(amp) restrictions part 0 of N – introduction
- java工具类:文本中去除html标签
- Apache [forbidden 403]错误的解决办法-新建www目录引起的
- Linux 防火墙策略——APF