3

ユーザーが移動できるスプライトの配列があり、ccTouchesMoved 内で処理されます。

ユーザーがスプライトの 1 つを (タッチして) 選択すると、回転機能の選択を解除するまで、ccTouchesMoved メソッドを使用してスプライトを回転するオプションが表示されます。

スプライトは正しく回転しますが、スプライトの周りにエッジを作成する別の方法があります。

このメソッドが呼び出されると、すべてのスプライトの回転がリセットされて 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); 
4

1 に答える 1

2

b2body の回転も更新します。

   body->SetTransform([self toB2Meters: sprite.position], -1*CC_DEGREES_TO_RADIANS(20));
于 2013-03-29T11:13:56.483 に答える