box2d-x学习经历

首先去下载box2d中文版教程,看大概。很多时候,这个是给予你一个大体的概念,然后再去细化写代码。

上手为一个完整的游戏,超级玛丽。出自泰然论坛,使用的是oc来写的,改造过来用C++重写。

首先一个为重点DebugDraw

1 cocos2d中testcpp->box2dTestBed文件夹,下面有GLES-Render.h/GLES-Render.cpp,这两个文件先要拷到你的项目中
2 在你的helloworldscene.h中创建  GLESDebugDraw *m_DebugDraw 对象 再写个 void draw()方法
3 在helloworldscene.cpp中 init()函数里:
 //PTM_RATIO是box2d中单位米和像素转换比率 #define PTM_RATIO 32
 m_DebugDraw = new GLESDebugDraw(PTM_RATIO);
//m_World 是世界对象
 m_World->SetDebugDraw(m_DebugDraw);
 uint32 flags = 0;
 flags += b2Draw::e_shapeBit;
 m_DebugDraw->SetFlags(flags);
 draw();
4 在helloworldscene.cpp中 定义刚写的void draw()方法
void HelloWorld::draw()
{
CCLayer::draw();

ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position );

kmGLPushMatrix();

m_World->DrawDebugData();//这个是一定要写的 其他几句不知道啥意思 看别人代码抄的

kmGLPopMatrix();

CHECK_GL_ERROR_DEBUG();
}

最后将地图的z轴设置为-2,因为draw是加在层的draw中。

2.

固定旋转(Fixed Rotation)

你可能想一个刚体,比如某个角色,具有固定的旋转角。这样物体即使在负载下,也不会旋转。 你可以设置fixedRotation来达到这目的:

bodyDef.fixedRotation = true;

3.userData赋值已经更改为直接赋值, HeroBodyDef.userData = m_Hero;

4.对于SimpleDPad类,使用了委托模式。意味着一个委托类(并非SimpleDPad),将会处理由被委托类(SimpleDPad)启动的任务。在某些你指定的点上,主要是当涉及到处理任何游戏相关的东西,SimpleDPad将会将职责传递给委托类。这使得SimpleDPad无需知道任何游戏逻辑,从而允许你在开发任何其他游戏时,可以进行重用。如下图所示:

http://blog.csdn.net/akof1314/article/details/8549150

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值