Cocos2d-x3.0游戏实例之《别救我》第二篇——创建物理世界

来源:未知 责任编辑:责任编辑 发表时间:2014-05-20 18:26 点击:

 

3.0新亮点,史上最简单的物理引擎

在Cocos2d-x3.0里使用物理引擎,会很有快感,因为很多繁琐的东西它都帮我们封装好了。

 

那么,我要开始创建游戏的关卡场景了,大家跟紧了。

 

我们给关卡场景命名为TollgateScene,头文件如下:


  1. #ifndef TollgateScene_H
  2. #define TollgateScene_H
  3.  
  4. #include cocos2d.h
  5. USING_NS_CC;
  6. class TollgateScene : public Layer
  7. {
  8. public:
  9. ~TollgateScene();
  10. static Scene* scene();
  11. CREATE_FUNC(TollgateScene);
  12. virtual bool init();
  13.  
  14. virtual void onExit() override;
  15. };
  16.  
  17. #endif
 

头文件没有什么特别的,和普通的场景头文件一样。

然后,来看看cpp文件:

 


  1. #include TollgateScene.h
  2. #include BackgroundLayer.h
  3.  
  4. TollgateScene::~TollgateScene()
  5. {
  6. }
  7.  
  8. Scene* TollgateScene::scene()
  9. {
  10. auto scene = Scene::createWithPhysics();
  11.  
  12. /* 微重力世界 */
  13. Vect gravity(0, -0.5f);
  14. scene->getPhysicsWorld()->setGravity(gravity);
  15.  
  16. /* 开启测试模式 */
  17. scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);
  18.  
  19. //创建一个边界
  20. Size visibleSize = Director::getInstance()->getVisibleSize();
  21.  
  22. /*
  23. 创建一个空心盒子刚体,作为我们游戏世界的边界(避免游戏内的物体跑出屏幕)
  24. 参数分别是刚体大小、材质(其实就是一些预设的配置数据)、边线厚度
  25. */
  26. auto body = PhysicsBody::createEdgeBox(Size(visibleSize.width, visibleSize.height), PHYSICSBODY_MATERIAL_DEFAULT, 3);
  27.  
  28. /* 创建一个节点,用于承载刚体,这样刚体就能参与到游戏的物理世界 */
  29. auto node = Node::create();
  30. node->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2));
  31. node->setPhysicsBody(body);
  32. scene->addChild(node);
  33.  
  34. auto layer = TollgateScene::create();
  35. scene->addChild(layer, 10);
  36.  
  37. return scene;
  38. }
  39.  
  40.  
  41. bool TollgateScene::init()
  42. {
  43. if (!Layer::init())
  44. {
  45. return false;
  46. }
  47. return true;
  48. }
  49.  
  50. void TollgateScene::onExit()
  51. {
  52. Layer::onExit();
  53. }

 

太复杂了,我要分几个部分来讲解(小若:但是你一开始说很简单的啊!)

 

集成物理世界的场景

在3.0里要创建一个物理世界,很简单,之前我们创建场景,调用的是Scene::create()。如果要创建物理场景,那就:

 

auto scene = Scene::createWithPhysics();

于是这个场景就具备了物理世界的功能,不要再做什么其他处理了。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1