Box2d基础知识

1.1 刚体,质点,只有位置没有大小
  • 静态刚体:静态刚体没有质量,没有速度,只可以手动来改变他的位置
  • 运动刚体:运动刚体没有质量,但是可以有速度,可以自己更新位置
  • 动态刚体:动态刚体有质量也有速度

创建刚体

b2BodyDef bodyDef;                                  // 定义刚体
bodyDef.type = b2_dynamicBody;                      // 定义刚体的类型b2_staticBody*, b2_kinematicBody, b2_dynamicBody
bodyDef.position.Set(x/PTM_RATIO, y/PTM_RATIO);     // 设置刚体的位置,进行单位转换,box2d以米作单位,所以把像素转换成米,32像素为1米

b2Body* groundBody = world->CreateBody(&bodyDef);   // 根据刚体定义创建刚体
1.2 形状,添加到刚体上进行碰撞,具有摩擦和恢复等材料特性
b2PolygonShape dynamicBox;                              // 定义一个形状
dynamicBox.SetAsBox(.5f, .5f);                          // 设置这个盒子的中点,则盒子长宽为1m
1.3 关联,关联是一种附加到刚体的属性,一个刚体可以有多个关联。
b2FixtureDef fixtureDef;                                // 定义一个关联
fixtureDef.shape = &dynamicBox;                         // 关联的形状
fixtureDef.density = 1.0f;                              // 密度
fixtureDef.friction = 0.3f;                             // 摩擦
body->CreateFixture(&fixtureDef);                       // 创建刚体关联
1.4 链接,链接可以联系多个刚体
b2RevoluteJointDef rjd;                                 // 定义一个链接
rjd.Initialize(m_attachment, m_platform, b2Vec2(0.0f, 5.0f));
rjd.maxMotorTorque = 50.0f;
rjd.enableMotor = true;
world->CreateJoint(&rjd);
1.5 约束
 
1.6 世界
b2Vec2 gravity;                                         // 定义重力
gravity.Set(0.0f, -10.0f);                              // 设置重力的方向为-10
world = new b2World(gravity);                           // 创建世界
world->SetAllowSleeping(true);                          // 
world->SetContinuousPhysics(true);
原文链接:http://blog.linguofeng.com/pages/language/c/box2d.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值