本次的cocos2d-x的版本号为2.1.3,废话不多说,直接上代码!!!!!

#ifndef__HELLOWORLD_SCENE_H__#define__HELLOWORLD_SCENE_H__#include"cocos2d.h"#include"Box2D/Box2D.h"usingnamespacecocos2d;classHelloWorld:publiccocos2d::CCLayer{public:virtualboolinit();staticcocos2d::CCScene*scene();CREATE_FUNC(HelloWorld);HelloWorld();~HelloWorld();voidtick(floattime);private://世界b2World*m_world;//刚体b2Body*m_body;//篮球CCSprite*m_ball;};#endif//__HELLOWORLD_SCENE_H__

#include"HelloWorldScene.h"usingnamespacecocos2d;#definePTM_RATIO32.0//像素到米的转换HelloWorld::HelloWorld(){m_world=NULL;m_body=NULL;m_ball=NULL;}HelloWorld::~HelloWorld(){deletem_world;m_body=NULL;m_ball=NULL;}CCScene*HelloWorld::scene(){CCScene*scene=NULL;do{scene=CCScene::create();CC_BREAK_IF(!scene);HelloWorld*layer=HelloWorld::create();CC_BREAK_IF(!layer);scene->addChild(layer);}while(0);returnscene;}boolHelloWorld::init(){boolbRet=false;do{CC_BREAK_IF(!CCLayer::init());CCSizesize=CCDirector::sharedDirector()->getWinSize();//篮球m_ball=CCSprite::create("Ball.png");CC_BREAK_IF(!m_ball);m_ball->setPosition(ccp(100,400));this->addChild(m_ball);//创建一个世界b2Vec2gravity(0.0f,-10.0f);m_world=newb2World(gravity);/**创建围绕整个屏幕的边缘**///刚体定义b2BodyDefgroundBodyDef;groundBodyDef.position.Set(0,0);//世界根据刚体定义生成刚体b2Body*groundBody=m_world->CreateBody(&groundBodyDef);//生成形状b2EdgeShapegroundBox;//关联定义b2FixtureDefboxShapeDef;boxShapeDef.shape=&groundBox;//设置形状属性---下边框groundBox.Set(b2Vec2(0.0f,0.0f),b2Vec2(size.width/PTM_RATIO,0));//创建关联groundBody->CreateFixture(&boxShapeDef);//设置形状属性---左边框groundBox.Set(b2Vec2(0.0f,0.0f),b2Vec2(0,size.height/PTM_RATIO));//创建关联groundBody->CreateFixture(&boxShapeDef);//设置形状属性---上边框groundBox.Set(b2Vec2(0.0f,size.height/PTM_RATIO),b2Vec2(0,size.height/PTM_RATIO));//创建关联groundBody->CreateFixture(&boxShapeDef);//设置形状属性--右边框groundBox.Set(b2Vec2(size.width/PTM_RATIO,size.height/PTM_RATIO),b2Vec2(size.width/PTM_RATIO,0.0f));//创建关联groundBody->CreateFixture(&boxShapeDef);//创建篮球刚体与形状b2BodyDefballBodyDef;ballBodyDef.type=b2_dynamicBody;ballBodyDef.position.Set(100/PTM_RATIO,400/PTM_RATIO);//关联篮球精灵ballBodyDef.userData=m_ball;//创建篮球刚体m_body=m_world->CreateBody(&ballBodyDef);//生成形状b2CircleShapecircle;circle.m_radius=26.0/PTM_RATIO;//关联定义b2FixtureDefballShapeDef;ballShapeDef.shape=&circle;//密度ballShapeDef.density=1.0f;//摩擦力ballShapeDef.friction=1.0f;//反弹系数ballShapeDef.restitution=0.8f;m_body->CreateFixture(&ballShapeDef);this->schedule(schedule_selector(HelloWorld::tick),0.1f);bRet=true;}while(0);returnbRet;}voidHelloWorld::tick(floattime){//世界步m_world->Step(time,10,10);//获取世界的里的刚体for(b2Body*body=m_world->GetBodyList();body!=NULL;body=body->GetNext()){//获取篮球精灵if(body->GetUserData()){//根据刚体的位置设置篮球精灵的位置CCSprite*ballSprite=(CCSprite*)body->GetUserData();ballSprite->setPosition(ccp(body->GetPosition().x*PTM_RATIO,body->GetPosition().y*PTM_RATIO));ballSprite->setRotation(-1*CC_RADIANS_TO_DEGREES(body->GetAngle()));}}}

运行结果:

代码已经写得很清晰了,我们总结下,首先创建一个世界,世界通过刚体定义生成刚体,关联把形状连接起来,刚体通过关联定义生成关联!!下面附上篮球一个!!

由于本人是业余,代码难免有所披露,望大家斧正!!谢谢,本人QQ947491240恭候大家拍砖!!再次感谢!!

附件:http://down.51cto.com/data/2362584