场景创建:
1 auto scene = Scene::createWithPhysics(); // 创建一个物理引擎世界场景
获取物理引擎世界对象:
1 getPhysicsWorld(); //获取初始化的物理世界(PhysicsWorld)对象
设置在物理世界中绘制调试遮罩:
1 scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL)
把物体的形状绘制出来,物理世界中的物体,如果没有和精灵绑定在一起,我们是看不到它的,这个功能主要用于调试。如果发布,需要关闭该功能。
世界边界:
1 //定义世界的边界 2 auto body = PhysicsBody::createEdgeBox(visibleSize,PHYSICSBODY_MATERIAL_DEFAULT,5.0f);3 auto edgeNode = Node::create(); 4 edgeNode->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));5 edgeNode->setPhysicsBody(body);6 this->addChild(edgeNode);
世界边界也是一个物体
PhysicsBody::createEdgeBox是创建物体对象,静态函数createEdgeBox指定世界边界是矩形盒子,createEdgeBox函数的第一个参数指定矩形的大小。第二个参数是设置材质,PHYSICSBODY_MATERIAL_DEFAULT常量是默认材质,材质是由结构体PhysicsMaterial定义的,结构体PhysicsMaterial成员有:density(密度)、friction(磨擦系数)和restitution(弹性系数)。密度可以用来计算物体的质量,密度可以为零或者为正数。摩擦系数经常会设置在0.0~1.0之间,0.0表示没有摩擦力,1.0会产生强摩擦。弹性系数的值通常设置到0.0~1.0之间,0.0表示物体不会弹起,1.0表示物体会完全反弹,即称为弹性碰撞。createEdgeBox函数的第三个参数是设置边的宽度。
代码第②行是创建边界节点对象,这个节点对象作为世界边界对象,第③行代码是设置节点对象的位置。第④行代码edgeNode->setPhysicsBody(body)是设置与节点相关的物体对象。通过这条语句使得游戏场景中的节点对象(精灵等)与物体关联起来。第⑤行代码是将节点对象添加到层中。
时间: 2024-10-12 22:41:36