2011-11-08 14 views
0

私のゲームで私のb2Bodyをアニメートしたいと思います。それらにCCActionsを使用することは可能ですか?また、Box2Dはさまざまな方法でアニメーションを使用しますか?私が持っている各b2BodyはCCSpriteに接続されており、CCSpriteはそれに対応するb2Bodyの現在の位置に更新されます。 とにかく、私はどのように私は位置Aから位置Bに移動するb2Bodyをアニメーションできますか?CCSpritesでb2Bodyをアニメ化しますか?

ヒントやアドバイスも参考になります。

ありがとうございます!

答えて

1

これは私の新しいコードです:

-(void)addBody 
{ 

    boxImg=[CCSprite spriteWithFile:@"ballImg1.png"]; 
    boxImg.position=ccp(30,100); 
    [self addChild:boxImg]; 

    // Define the dynamic body. 
    //Set up a 1m squared box in the physics world 
    b2BodyDef bodyDef; 
    bodyDef.type = b2_dynamicBody; 

    bodyDef.position.Set(30.0/PTM_RATIO, 100.0/PTM_RATIO); 
    bodyDef.userData = boxImg; 
    body1= world->CreateBody(&bodyDef); 

    // Define another box shape for our dynamic body. 
    b2PolygonShape dynamicBox; 
    dynamicBox.SetAsBox(.5f, .5f);//These are mid points for our 1m box 

    // Define the dynamic body fixture. 
    b2FixtureDef fixtureDef; 
    fixtureDef.shape = &dynamicBox; 
    fixtureDef.density = 1.0f; 
    fixtureDef.friction = 0.3f; 
    body1->CreateFixture(&fixtureDef); 

    posx1=300.0; 
    posy1=100.0; 
    [self performSelector:@selector(moveAni) withObject:nil afterDelay:1.0]; 

} 
-(void)moveAni 
    { 
body1->SetTransform(b2Vec2(posx1/PTM_RATIO, posy1/PTM_RATIO), 0); 
id action = [CCMoveTo actionWithDuration:0.4 position:CGPointMake(b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO)]; 
[boxImg runAction:action]; 
    } 

まずuが「のsetTransform」を使用して手動で体を動かし、そして私はこれがどのように動作するか非常にわかりません。この機能

+0

を使用しています。あなたはCCSpriteをアニメーションしますが、あなたのゲームループでは、アニメーション化されていないb2BodyにCCSpriteの位置を設定しています。この仕組みをもう少し説明してもらえますか? –

+0

ああ、あなたはアニメーションの中でb2BodyとCCSpriteを動かしています。私の場合、私のすべてのCCSpritesが私のb2Bodysに従っているので、CCMoveToを使用する理由はありますか?あなたはその行を削除しようとしましたか? –

関連する問題