cocos2dx 3.x之后把物理引擎都集成了,cocos2dx默认的封装是chipmunk。你可以改换成box2d,具体的操作。
我用了3.x新封装的物理引擎一段时间,感觉上手蛮容易的,简单的物理运动和碰撞还是可以应付的,但是重新封装的物理引擎感觉功能还是没有单独的box2d强大。所以原来想偷懒不学box2d,看来还是不行啊,复杂的物理运动还是box2d做的。
把box2d在vs2012中配置完成之后,看不到body的形状和颜色,在调试的时候不方便。所以还是要弄debugdraw。
我在网上搜了一堆资料,试了很多,就是不行。感觉应该是版本不同吧,网上的都是2.x版本的。有点不同,大部分都是相同的。下面是我的配置,仅供参考
1..首先我们需要拷贝 GLES-Render.cpp GLES-Render.h到我们工作的目录,
这个两个文件可以在coco2d-x的示例代码中的tests\Box2DTestBed中可以找到。
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, const Mat4& transform, bool transformUpdated)
{
world->DrawDebugData();
}
ok了,花了一段时间,,总算没白费!
版权声明:本文为博主原创文章,未经博主允许不得转载。
发光并非太阳的专利,你也可以发光