一、物理场景的创建creatScene:
1、auto scene = Scene::createWithPhssics();
设置重力:Vect gravity(0,1.0f);
为场景设置重力:scene->getPhysicsWirld()->setGravity(gravity);
2、开启物理场景的测试模式
scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);
3、创建场景边界
Size visibleSize =Director::getInstance()->getVisibleSize();
auto body =PhysicsBody::createEdgeBox(Size(visibleSize.width,visibleSize.height),PHYSICSBODY_MATERIAL_DEFAULT,3);
4、场景是用来添加节点的,所以创建的钢体必须保存在一个节点中
auto node =Node::create();
node->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
node->setPhysicsBody(body);
scene->addChild(node);
5、创建一个Layer,添加到场景中去
6、背景层可以单独创建一个类,将其加入到物理场景中
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上都是在场景中完成的!
二、初始化中添加角色等信息
1、创建主角并添加到当前使用的层中
2、添加Cocos Studio中的界面元素
3、事件碰撞回调器等
4、要重写碰撞检测器的方法:
//碰撞检测
bool onContactBegin(PhysicsContact& contact);
三、碰撞监测的方法
class EventListenerPhysicsContact
1、两个物体接触的时候相应此事件,相当时触摸事件中的onBegin()等4个方法
std::function<bool(PhysicsContact& contact)> onContactBegin;
2、两个物体正在接触时,返回true执行函数内容,返回false不执行
std::function<bool(PhysicsContact& contact,PhysicsContactPreSolve& solve)> onContactPreSolve;
3、在接触时,发生的事件std::function<void(PhysicsContact& contact,const PhysicsContactPostSolve& solve)> onContactPostSolve;
4、分离时响应
std::function<void(PhysicsContact& contact)> onContactSeperate;