Box2d学习笔记一:在cocos2d-x中启动调试绘图

box2d作为一款开源的物理引擎,深受开发者的喜爱,从今天开始正式学习box2d,为我们的游戏增加物理模拟吧。

cocos2d-X用的物理引擎之一就是box2d,学习box2d,首先要弄清刚体的概念。所谓刚体,就是他的形状不为任何外力所改变,它具有质量和关系,运动状态又重心和受力决定。在box2d世界中,符合经典力学的各种规律。

为了方便开发调试,下面是启动box2d的调试绘图,就可以看见自己所创建的刚体对象,在自己创建的物理世界中的运动状态了:

新建一个cocos2d-x win32项目,打开HelloWorldScene.cpp文件,在bool HelloWorld::init()函数中,删除其自动生成的内容。

在HelloWorldScene.h中加入box2d所需的头文件,#include "Box2D\Box2D.h",然后在coco2d-x目录中找到TestCpp项目,并找到GLES-Render.h和GLES-Render.cpp文件,这是绘图所需的源文件,#include "GLES-Render.h"同样加入到HelloWorldScene.h中。

加入相应的box2d库,



到此,配置环境到此结束。

重写CCLayer的void draw()函数:

void HelloWorld::draw(){
CCLayer::draw();

ccGLEnableVertexAttribs(kCCVertexAttribFlag_Position);

kmGLPushMatrix();

world->DrawDebugData();

kmGLPopMatrix();
}


bool HelloWorld::init()方法:加入以下代码

b2Vec2 gravity;
gravity.Set(0.0f,-10.0f);

//创建一个物理世界
world=new b2World(gravity);

//开启连续碰撞
world->SetContinuousPhysics(true);

//世界中的物体可以休眠
world->SetAllowSleeping(true);

//调试绘图
GLESDebugDraw *m_debugdraw=new GLESDebugDraw(PTM_RATIO);
world->SetDebugDraw(m_debugdraw);

//调试绘制标签
uint32 flags=0;
flags+=b2Draw::e_shapeBit;
//flags+=b2Draw::e_aabbBit;
flags+=b2Draw::e_jointBit;
flags+=b2Draw::e_pairBit;
flags+=b2Draw::e_centerOfMassBit;
m_debugdraw->SetFlags(flags);


OK!到此结束。以前测试刚体时,可以直接看见物理世界刚体的形状了。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值