加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2dx 3.1.1 box2d 添加debugDraw

发布时间:2020-12-14 19:49:14 所属栏目:百科 来源:网络整理
导读:cocos2dx 3.x之后把物理引擎都集成了,cocos2dx默认的封装是chipmunk。你可以改换成box2d,具体的操作http://guandongsheng.iteye.com/blog/2125016。 我用了3.x新封装的物理引擎一段时间,感觉上手蛮容易的,简单的物理运动和碰撞还是可以应付的,但是重新

cocos2dx 3.x之后把物理引擎都集成了,cocos2dx默认的封装是chipmunk。你可以改换成box2d,具体的操作http://guandongsheng.iteye.com/blog/2125016。

我用了3.x新封装的物理引擎一段时间,感觉上手蛮容易的,简单的物理运动和碰撞还是可以应付的,但是重新封装的物理引擎感觉功能还是没有单独的box2d强大。所以原来想偷懒不学box2d,看来还是不行啊,复杂的物理运动还是box2d做的。

把box2d在vs2012中配置完成之后,看不到body的形状和颜色,在调试的时候不方便。所以还是要弄debugdraw。

我在网上搜了一堆资料,试了很多,就是不行。感觉应该是版本不同吧,网上的都是2.x版本的。有点不同,大部分都是相同的。下面是我的配置,仅供参考

1..首先我们需要拷贝
GLES-Render.cpp
GLES-Render.h
到我们工作的目录,

这个两个文件可以在coco2d-x的示例代码中的testsBox2DTestBed中可以找到。


2.在HelloWorld.h头文件中加入

#include "GLES-Render.h"


在类中加入

GLESDebugDraw*debugDraw;

virtual void draw(Renderer *renderer,const Mat4& transform,bool transformUpdated);

注意不是void draw()函数,否则报错!


3.init函数中加入


world = new b2World(gravity);

debugdraw = new GLESDebugDraw(PTM_RATIO);
uint32 flags = 0;
flags += b2Draw::e_shapeBit ;
//flags += b2Draw::e_jointBit;
//flags += b2Draw::e_aabbBit;
//flags += b2Draw::e_pairBit;
//flags += b2Draw::e_centerOfMassBit;
debugdraw->SetFlags(flags);
world->SetDebugDraw(debugdraw);

4.重写draw函数(注意是有参数的draw的函数,因为在node.h中virtual void draw() final;)

void HelloWorld::draw(Renderer *renderer,bool transformUpdated)

{

world->DrawDebugData();

}

ok了,花了一段时间,总算没白费!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读