kingBook

导航

统计

cocos2d-x 3.10 显示Box2d 调试视图

1.将cocos2d-x-3.10\tests\cpp-tests\Classes\Box2DTestBed目录下的GLES-Render.h和GLES-Render.cpp拷贝到当前项目的Classes目录下。

2.在visual studio2013打开当前项目解决方案,在解决方案资源管理器的src下右键->添加->现有项,选择刚才拷贝到Classes目录下GLES-Render.h和GLES-Render.cpp。

Box2dTest.h

复制代码
 1 #ifndef _BOX2D_TEST_H_
 2 #define _BOX2D_TEST_H_
 3 #include "cocos2d.h"
 4 #include "Box2D\Box2D.h"
 5 USING_NS_CC;
 6 class Box2dTest:public Node{
 7 public:
 8     Box2dTest();
 9     ~Box2dTest();
10     virtual bool init();
11     void update(float) override;
12     virtual void draw(Renderer *renderer, const Mat4& transform, uint32_t flags) override;
13     CREATE_FUNC(Box2dTest);
14 private:
15     b2World* _world;
16 };
17 #endif
复制代码

Box2dTest.cpp

复制代码
 1 #include "Box2dTest.h"
 2 #include "GLES-Render.h"
 3 
 4 #define PTM_RATIO 32
 5 
 6 Box2dTest::Box2dTest(){
 7     
 8 }
 9 
10 Box2dTest::~Box2dTest(){
11     CC_SAFE_DELETE(_world);
12 }
13 
14 bool Box2dTest::init(){
15     if (!Node::init())return false;
16     _world = new b2World(b2Vec2(0.0f, 0.0f));
17 
18     //创建一个矩形刚体
19     b2BodyDef boxDef;
20     boxDef.position.Set(500/PTM_RATIO,350/PTM_RATIO);
21     b2Body* box = _world->CreateBody(&boxDef);
22     b2PolygonShape boxShape;
23     boxShape.SetAsBox(40/PTM_RATIO, 40/PTM_RATIO);
24     box->CreateFixture(&boxShape,1);
25     
26     //调试视图
27     GLESDebugDraw* debugDraw = new GLESDebugDraw(PTM_RATIO);
28     _world->SetDebugDraw(debugDraw);
29     uint32 flags = 0;
30     flags += b2Draw::e_shapeBit;
31     flags += b2Draw::e_pairBit;
32     flags += b2Draw::e_centerOfMassBit;
33     debugDraw->SetFlags(flags);
34 
35     scheduleUpdate();
36     return true;
37 }
38 
39 void Box2dTest::update(float delta){
40     _world->Step(30.0f, 10, 10);
41 }
42 
43 void Box2dTest::draw(Renderer *renderer, const Mat4& transform, uint32_t flags){
44     Node::draw(renderer, transform, flags);
45 
46     ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position);
47     kmGLPushMatrix();
48     _world->DrawDebugData();
49     kmGLPopMatrix();
50     CHECK_GL_ERROR_DEBUG();
51 }
复制代码

HelloWorld.cpp下的init()函数下添加:

1 Box2dTest* box2dTest=Box2dTest::create();
2 addChild(box2dTest);

 

posted on   kingBook  阅读(699)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示