我们在真正做一些物体的时候,有一些情况不是标准的圆形,矩形。这时我们需要创建多边形的刚体。这里推荐一个工具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);