编辑2:问题解决了!我不能保证它会在不同的设置下工作,但是通过将我的块体密度设置为 0,当添加新块时,块堆栈不会下降。
我很抱歉这个问题的标题很糟糕,我会在这里更详细地解释我的问题:
因此,我使用 Box2D 和 cocos2D 设置了一个简单的项目,其中两个盒子堆叠在一起(我计划扩展到 8-10 个盒子)。现在,在每个盒子上使用 10.0f 的摩擦力,顶部的盒子仍然会移动一点。如果我要添加更多的盒子,“塔”就会倒塌,我不希望这样。
我希望盒子利用重力向下移动,但我从不希望它们从 x 值开始改变。那么,我怎样才能防止我的盒子塔倒塌或防止我的盒子在 x 方向上移动呢?
编辑:发布一些代码 此代码创建一个框,另一个只有一个不同的 sprite 文件。
CCSprite *block = [CCSprite spriteWithFile:@"red.png"];
block.position = ccp(200,380);
[self addChild:block];
//Body definition
b2BodyDef blockDef;
blockDef.type = b2_dynamicBody;
blockDef.position.Set(200/PTM_RATIO, 200/PTM_RATIO);
blockDef.userData = block;
b2Body *blockBody = _world->CreateBody(&blockDef);
//Create the shape
b2PolygonShape blockShape;
blockShape.SetAsBox(block.contentSize.width/PTM_RATIO/2, block.contentSize.height/PTM_RATIO/2);
//Fixture defintion
b2FixtureDef blockFixtureDef;
blockFixtureDef.shape = &blockShape;
blockFixtureDef.restitution = 0.0f;
blockFixtureDef.density = 10.0f;
blockFixtureDef.friction = 10.0f;
_redBlockFixture = blockBody->CreateFixture(&blockFixtureDef);
没有什么花哨。
问候。