我有一组 Sprite,允许用户移动在 ccTouchesMoved 中处理。
当用户选择了其中一个精灵(通过触摸它)时,他们可以选择使用 ccTouchesMoved 方法旋转精灵,直到他们取消选择旋转功能。
精灵可以正确旋转,但是我有另一种方法可以在精灵周围创建边缘,这样它们就有了碰撞的能力,什么没有。
调用此方法时,它会重置我所有 Sprite 的旋转,将它们设置回 0,我不知道为什么。
for (CCSprite *sprite in bounceBarriers)
{
curBarrier = sprite;
curBarrier.rotation = 20;
[self bounceCreator];
}
//bounceCreator:
b2BodyDef barrierBodyDef;
barrierBodyDef.type = b2_staticBody;
barrierBodyDef.position.Set(curBarrier
.position.x/PTM_RATIO, curBarrier.position.y/PTM_RATIO);
barrierBodyDef.userData = curBarrier; //the userData is set to the current sprite
_body2 = _world->CreateBody(&barrierBodyDef);
barrierBodyDef.position.Set(0,0);
b2Body *barrierBody;
barrierBody = _world->CreateBody(&barrierBodyDef);
b2EdgeShape barrierEdge;
b2FixtureDef barrierShapeDef;
barrierShapeDef.shape = &barrierEdge;
barrierShapeDef.friction = 1.0f;
barrierShapeDef.restitution = 1.0f;
barrierEdge.Set(b2Vec2((curBarrier.position.x-70)/PTM_RATIO, (curBarrier.position.y+10)/PTM_RATIO),
b2Vec2((curBarrier.position.x-70)/PTM_RATIO, (curBarrier.position.y-10)/PTM_RATIO));
barrierBody->CreateFixture(&barrierShapeDef);
barrierEdge.Set(b2Vec2((curBarrier.position.x-70)/PTM_RATIO, (curBarrier.position.y-10)/PTM_RATIO),
b2Vec2((curBarrier.position.x+70)/PTM_RATIO, (curBarrier.position.y-10)/PTM_RATIO));
barrierBody->CreateFixture(&barrierShapeDef);
barrierEdge.Set(b2Vec2((curBarrier.position.x+70)/PTM_RATIO, (curBarrier.position.y-10)/PTM_RATIO),
b2Vec2((curBarrier.position.x+70)/PTM_RATIO, (curBarrier.position.y+10)/PTM_RATIO));
barrierBody->CreateFixture(&barrierShapeDef);
barrierEdge.Set(b2Vec2((curBarrier.position.x+70)/PTM_RATIO, (curBarrier.position.y+10)/PTM_RATIO),
b2Vec2((curBarrier.position.x-70)/PTM_RATIO, (curBarrier.position.y+10)/PTM_RATIO));
barrierBody->CreateFixture(&barrierShapeDef);