菜鸟求助

实在是走投无路,第一次在社区发帖求助。 我用的是3.2的版本。 在项目中导入了box2d,想创建 一个地面, 但是无论怎么弄,物体落下来都直接穿过我创建的地面。我的系统是win7
代码如下
//创建一个物体 并绑定精灵 (ps PTM_RATIO 是32.0 然后 winsize是 960 480 )
b2BodyDef bodydef;
b2Body* body;
bodydef.type=b2BodyType::b2_dynamicBody;
bodydef.position.Set(20,15);
body=world->CreateBody(&bodydef);

auto sprite=Sprite::create();
addChild(sprite,0);
sprite->setTextureRect(Rect(0,0,80,80)); 
body->SetUserData(sprite);

//创建地面
b2Body* groundBody;

b2BodyDef groundBodyDef;

groundBodyDef.position.Set(480/PTM_RATIO,0);
groundBodyDef.type=b2_staticBody;
groundBody=world->CreateBody(&groundBodyDef);
b2PolygonShape shape;
shape.SetAsBox(480/PTM_RATIO,0.5);
b2FixtureDef fixturedef;
fixturedef.shape=&shape;
fixturedef.density=1;
fixturedef.friction=0.3;
groundBody->CreateFixture(&fixturedef);

另外一种创建地面的方式我也试过 结果也一样,直接穿过 代码如下
//创建整个边界
b2BodyDef grounddef;

b2EdgeShape groundBox;

grounddef.position.Set(0,0);
grounddef.type=b2_staticBody;
b2Body* groundBody=world->CreateBody(&grounddef);
groundBox.Set(b2Vec2(0,0),b2Vec2(winSize.width/PTM_RATIO,0));
groundBody->CreateFixture(&groundBox,0);
groundBox.Set(b2Vec2(0,0),b2Vec2(0,winSize.height/PTM_RATIO));
groundBody->CreateFixture(&groundBox,0);
groundBox.Set(b2Vec2(0,winSize.height/PTM_RATIO),b2Vec2(winSize.width/PTM_RATIO,winSize.height/PTM_RATIO));
groundBody->CreateFixture(&groundBox,0);
groundBox.Set(b2Vec2(winSize.width/PTM_RATIO,winSize.height/PTM_RATIO),b2Vec2(winSize.width/PTM_RATIO,0));
groundBody->CreateFixture(&groundBox,0);

是我的编译环境有问题吗?还是代码哪里不对 我用的是cocos2dx 3.2的版本 拜托大牛解救下了

64555322这里有ios交流群,里面有大牛