cocos2d-x下box2d debug模式

本文详细介绍了如何在Cocos2d-x项目中集成Box2D物理引擎,包括必要的文件拷贝、代码配置及调试技巧。通过具体步骤指导读者实现Box2D在游戏开发中的应用。
首先我们需要拷贝GLES-Render.cpp,GLES-Render.h到我们工作的目录,

这个两个文件可以在coco2d-x的示例代码中的tests\Box2DTestBed中可以找到。我是在ubuntu下写的,要在mk文件中添加这个CPP文件才能编译使用。

  1. #ifndef __BOX_LAYER_H__  
  2. #define __BOX_LAYER_H__  
  3. #include "cocos2d.h"  
  4. #include "Box2D/Box2D.h"  
  5. #include "GLES-Render.h"   //这里包含  
  6. #define  PTM_RATIO 32  
  7. class BoxLayer : public cocos2d::CCLayer  
  8. {  
  9.    
  10. public:  
  11.     b2World * world;     //物理世界  
  12.     GLESDebugDraw *debugDraw;    //这里新建示例  
  13.     virtual bool init();    
  14.     static cocos2d::CCScene * scene();  
  15.     void update(float dt);   //这个是控制box2d世界的刷新器  
  16.     void draw();    //这里需要一个关键的draw函数,  
  17.     CREATE_FUNC(BoxLayer);  
  18. };
然后在init添加代码如下:

  1. debugDraw = new GLESDebugDraw(PTM_RATIO);   //这里新建一个 debug渲染模块  
  2. world->SetDebugDraw(debugDraw);    //设置  
  3. uint32 flags = 0;     
  4. flags += b2Draw::e_shapeBit ;  
  5. //b2Draw::e_centerOfMassBit;   //获取需要显示debugdraw的块  
  6. //b2Draw::e_aabbBit;  //AABB块  
  7. //b2Draw::e_centerOfMassBit; 物体质心  
  8. //b2Draw::e_jointBit;  //关节  
  9. //b2Draw::e_shapeBit;   形状  
  10. debugDraw->SetFlags(flags);   //需要显示那些东西  
  11. draw();   //画出来  
  12. scheduleUpdate();//这个一定要写

draw()方法:


  1. void BoxLayer::draw()  
  2. {  
  3.     glDisable(GL_TEXTURE_2D);  
  4.     glDisableClientState(GL_COLOR_ARRAY);  
  5.     glDisableClientState(GL_TEXTURE_COORD_ARRAY);  
  6.    
  7.     world->DrawDebugData();   //这个一定要写  
  8.    
  9.     glEnable(GL_TEXTURE_2D);  
  10.     glEnableClientState(GL_COLOR_ARRAY);  
  11.     glEnableClientState(GL_TEXTURE_COORD_ARRAY);      
这个方法除了world->DrawDebugData(); 这个其他可以不要。

update()方法:

  1. void BoxLayer::update()  
  2. {  
  3.   world->Step(dt,7,7);     
然后你就可以画出各种body都会显示出来的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值