不会开机的男孩

Box2d 04 多边形刚体和鼠标连接器

| Comments

我们在真正做一些物体的时候,有一些情况不是标准的圆形,矩形。这时我们需要创建多边形的刚体。这里推荐一个工具VertexHelper来帮我们生成刚体的定义。

今天的东西似乎有一点太少了,再瞅瞅另一种连接器,b2MouseJoint——鼠标连接器。 在使用鼠标连接器之前,我们需要找到我们选择的是那一个物体。

  • 获取手势的位置,也就是坐标向量
  • 创建一个小的物体,小到只是一个点,然后通过这个物体在物理世界中查找包含这个物体的刚体

鼠标连接器的使用步骤 当检测到碰撞时,创建连接器

b2MouseJointDef mouseJointDef;
mouseJointDef.bodyA = groundBody; //通常连接地面
mouseJointDef.bodyB = body;       //需要移动的刚体
mouseJointDef.target = locationWorld; //当前位置
mouseJointDef.maxForce = 1000 * body->GetMass(); //移动的最大力,这个决定移动的灵敏度
//mouseJointDef.collideConnected = true; //这个场景不需要

self.mouseJoint = (b2MouseJoint *) world->CreateJoint(&mouseJointDef);
//body->SetAwake(true);         //很多地方指定了这个,但是我实际测试,这个场景也不需要

在手势移动的时候重新设置

world->DestroyJoint(self.mouseJoint);
self.mouseJoint = NULL;

在手势取消和结束时销毁

world->DestroyJoint(_mouseJoint);

demo

Comments