Я хочу перемещать, анимировать и вращать объект одновременно - PullRequest
0 голосов
/ 24 июня 2011

Вот код:

ball = [CCSprite spriteWithFile:@"Ball.png" rect:CGRectMake(0, 0, 52, 52)];
        ball.position = ccp(300, 300);
        ball.tag = 1;
        [self addChild:ball z:-1];

        // Create ball body 
        //b2BodyDef ballBodyDef;
        ballBodyDef.type = b2_dynamicBody;
        ballBodyDef.position.Set(100/PTM_RATIO, 300/PTM_RATIO);
        ballBodyDef.userData = ball;
        b2Body * ballBody = _world->CreateBody(&ballBodyDef);

        // Create circle shape
        b2CircleShape circle;
        circle.m_radius = 20.0/PTM_RATIO;

        // Create shape definition and add to body
        b2FixtureDef ballShapeDef;
        ballShapeDef.shape = &circle;
        ballShapeDef.density = -2.5f;
        ballShapeDef.friction = 0.01f;
        ballShapeDef.restitution = 1.0f;
        _ballFixture = ballBody->CreateFixture(&ballShapeDef);

        b2Vec2 force = b2Vec2(5, 7);
        ballBody->ApplyLinearImpulse(force, ballBodyDef.position);

Я хочу вращать, анимировать и перемещать мяч, но я в замешательстве, Как применить все вещи одновременно!?

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Использование действия Spawn для одновременного воспроизведения множества действий. id spawAction = [CCSpawn actions: moveAction, rotateAction, nil]; [aSprite runAction: spawAction];

1 голос
/ 27 июня 2011

Например, как применить положение box2d и поворот к CCNode,

// Position
b2Vec2 b2pos = ballBody->GetPosition();
CGPoint position = ccpMult(CGPointMake(b2pos.x, b2pos.y), PTM_RATIO);
ball.position = position;

// Rotation
float angle = ballBody->GetAngle();
ball.rotation = -(CC_RADIANS_TO_DEGREES(angle));

Кстати, CCBox2D полезно с cocos2d и Box2d.

...