废话不多说,知道物理引擎的人想必也大概知道这是干什么的,不知道的话麻烦去百度自己找一下,在这里简单介绍一下物理世界刚体的创建。 // b2 坐标世界 //b2World * World; // 定义b2 物理世界 指针 b2Vec2 gravite; // 定义 加速度 x轴 y轴 y向上为正 gravite.Set(0.0f, -9.8f); this->World = new b2World(gravite); // 初始化 物理世界 ,看来前面的定义都是为了传参 // 创建 静态刚体 ,也就是大地 b2BodyDef groundDef; // 表示物体是静态的,应该也就是不受 gravite的影响吧,安稳如大地呗 groundDef.position.Set(0.0f,1/32.0f); // 同时这个静态大地刚体并没有添加 其使用者(userdata) b2Body* groundBody = World->CreateBody(&groundDef); // 向世界中添加该 2d 不动如山的节点 // (简单来说,定义世界 , 定义刚体 ,向世界添加刚体) // 创建刚体的各种属性,所以最后要添加到刚体身上 b2PolygonShape groundShape; groundShape.SetAsBox(visibleSize.width/2.0f, 10/32.0f); // 把刚体的形状设置成Box盒子 ,类似长方体。 groundBody->CreateFixture(&groundShape,0); // 在屏幕两边建立刚体,把围起来 b2BodyDef leftDef; // 定义对象 leftDef.position.Set(0.0f, 10/32.0f); // 设置启示坐标 b2Body* left_Body = World->CreateBody(&leftDef); // 刚体初始化 b2PolygonShape left_Shape; // 刚体属性 left_Shape.SetAsBox(10/32.0f, visibleSize.height/2.0f); // 刚体形状 ,为什么要/32,应该是像素根厘米的转化,设计用的是像素 left_Body->CreateFixture(&left_Shape,0); // 右边的刚体 b2BodyDef right_Def; right_Def.position.Set(visibleSize.width/32.0f, 10/32.0f); b2Body* right_Body = World->CreateBody(&right_Def); b2PolygonShape right_Shape; right_Shape.SetAsBox(10/32.0f, visibleSize.height/2.0f); right_Body->CreateFixture(&right_Shape,0); // 到这里,一个类似现实 具有大地 的 物理世界就诞生了