cocos2dx Physics 物理世界
来源:互联网 发布:诊所管理系统源码 编辑:程序博客网 时间:2024/05/17 22:27
创建物理场景:
重写createScene
Scene* HelloWorld::createScene() { auto scene = Scene::createWithPhysics(); scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL); //显示调试信息 scene->getPhysicsWorld()->setGravity(Vec2(0.0, -100.0)); //设置重力 auto layer = HelloWorld::create(); scene->addChild(layer); return scene;}
添加 addEdges 函数:
用于添加物体运动的边界
Node* HelloWorld::addEdges(){ //创建 body ,visibleSize表示body的大小, PhysicsMaterial表示材质,3表示边框的厚度 auto body = PhysicsBody::createEdgeBox(visibleSize, PhysicsMaterial(1, 1, 0), 3); body->setCategoryBitmask(4); //设置分类掩码 body->setContactTestBitmask(1 | 2 | 4); //设置接触掩码 body->setCollisionBitmask(1 | 2 | 4); //设置碰撞掩码 auto edges = Node::create(); //创建Node edges->setPhysicsBody(body); //设置节点的body edges->setPosition(visibleSize / 2); //居中 this->addChild(edges); return edges;}
添加 addBox 函数:
用于添加物体
Sprite* HelloWorld::addBox(Vec2 position){ PhysicsBody* body; auto box = Sprite::create(); switch (random(0, 1)) { case 0: box->initWithFile("red.png"); //设置精灵图片 body = PhysicsBody::createCircle(box->getContentSize().width / 2); //创建圆形body body->setCategoryBitmask(1); //设置分类掩码 body->setContactTestBitmask(1 | 2 | 4); //设置接触掩码 body->setCollisionBitmask(1 | 2 | 4); //设置碰撞掩码 box->setPhysicsBody(body); //设置精灵的body box->setPosition(position); //设置位置 this->addChild(box); break; case 1: box->initWithFile("yellow.png");//设置精灵图片 body = PhysicsBody::createCircle(box->getContentSize().width / 2); body->setCategoryBitmask(2); //设置分类掩码 body->setContactTestBitmask(1 | 2 | 4); //设置接触掩码 body->setCollisionBitmask(1 | 2 | 4); //设置碰撞掩码 box->setPhysicsBody(body); //设置精灵的body box->setPosition(position); //设置位置 this->addChild(box); break; default: break; } return box;}
创建事件侦听器:
//刚开始碰撞触发一次 contactListener->onContactBegin = [](PhysicsContact& contact){ //......... return true; //下面解释返回值 }; //接触就会一直触发 contactListener->onContactPreSolve = [](PhysicsContact& contact, PhysicsContactPreSolve& solve){ //......... return true; //下面解释返回值 };
首先解释CategoryBitmask, ContactTestBitmask, CollisionBitmask 三个代表含义,
CategoryBitmask: 分类掩码
ContactTestBitmask : 接触掩码
CollisionBitmask: 碰撞掩码
它们的作用如下:
当两个物体 A 和 B 碰撞后
0 0
- cocos2dx Physics 物理世界
- cocos2dx 物理世界
- cocos2dx physics物理引擎碰撞详解
- quick-cocos2d-x physics物理世界使用实例
- cocos2dx自学之使用box2d物理世界
- Physics物理引擎下载
- POJ3684 Physics Experiment 【物理】
- Coco2d Physics 物理引擎
- 菜鸟也能学cocos2dx3.0 物理的世界Physics-浅析篇(四)
- cocos2dx.3.2 physics
- Windows下cocos2dx-v3.1 导入Box2d物理引擎库 进行物理世界开发
- Corona学习指南之物理physics
- 【1】【物理/积分】HDU5826 physics
- hdu 5826 physics (物理+积分)
- HDU 5826 physics(物理)
- 【cocos2dx-3.0beta-制作flappybird】物理世界的美妙—游戏层的物理属性的设置
- AS3物理引擎 (AS3 Physics Engine)
- /LGC物理引擎/Havok physics engine 分析
- 【盘点】2014年跨境进口型电商十大模式
- mysql服务器查询慢原因分析与解决方法小结
- hdoj 2018 母牛的故事 (递归)
- CodeForces 320BPing-Pong (Easy Version)-DFS
- BZOJ_P2460 [BeiJing2011]元素(贪心+线性基)
- cocos2dx Physics 物理世界
- Java类的创建,成员变量和方法的创建及使用
- Thinkphp-事务处理
- Zookeeper学习(八):Zookeeper的数据发布与订阅模式
- 杭电2050折线分割平面
- Hello, World!
- 第二周项目四-用循环求(1)
- 分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目
- R语言获取历史股票数据