码迷,mamicode.com
首页 > 其他好文 > 详细

cocos2d-x 物理引擎

时间:2015-05-12 10:55:04      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

场景创建:

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)是设置与节点相关的物体对象。通过这条语句使得游戏场景中的节点对象(精灵等)与物体关联起来。第⑤行代码是将节点对象添加到层中。

 

cocos2d-x 物理引擎

标签:

原文地址:http://www.cnblogs.com/LeavesSmallAnt/p/4496420.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!