2013-02-05 42 views
0

在此代碼中使用spritesheet創建了一個動畫精靈。精靈創造了身體。有男孩可以使用按鈕在世界上移動。如何移動和跳轉box2d中的動畫精靈

//spritesheet plist 
    [[CCSpriteFrameCache sharedSpriteFrameCache] 
    addSpriteFramesWithFile:@"boyRunning.plist"]; 


    // Create a sprite sheet with the boyRunning images 
    spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"boyRunning.png"]; 
    [self addChild:spriteSheet]; 

    // Load up the frames of our animation 
    NSMutableArray *walkAnimFrames = [NSMutableArray array]; 
    for(int i = 2; i <=7; ++i) { 
     [walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"boyRunning%d.png", i]]]; 
    } 
    walkAnim = [CCAnimation animationWithFrames:walkAnimFrames delay:0.1f]; 

    // Create a sprite for our boy 
    CGSize winSize = [CCDirector sharedDirector].winSize; 
    self.boy = [CCSprite spriteWithSpriteFrameName:@"boyRunning1.png"];   
    _boy.position = ccp(100, 90); 
    self.walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim restoreOriginalFrame:NO]]; 
    [_boy runAction:_walkAction]; 
    [spriteSheet addChild:_boy]; 
    // boy body creation 
    b2BodyDef boyBodyDef; 
    boyBodyDef.type = b2_dynamicBody; 
    boyBodyDef.linearDamping = 1; 
    boyBodyDef.angularDamping = 1; 
    boyBodyDef.position.Set(230.0f/PTM_RATIO,(FLOOR_HEIGHT+91.0f)/PTM_RATIO); 
    boyBodyDef.userData = _boy; 
    boyBody = world->CreateBody(&boyBodyDef); 

    b2Body* dynamicBody = world->CreateBody(&boyBodyDef); 
    // Define another box shape for our dynamic body. 
    b2PolygonShape boxshape; 
    boxshape.SetAsBox(11.0f/PTM_RATIO, 30.0f/PTM_RATIO);//These are mid points for our 1m box 
    // Define the dynamic body fixture. 
    b2FixtureDef fixtureDef; 
    fixtureDef.shape = &boxshape; 
    fixtureDef.density = 1.0f; 
    fixtureDef.friction = 0.3f; 
    armFixture = boyBody->CreateFixture(&fixtureDef); 
    dynamicBody->SetTransform(b2Vec2(10, 20), 1); 

回答

0

當按鈕被按下

對於運動使用

body->ApplyForce(b2Vec2(0,50), bodiy]->GetWorldCenter()); 

對於跳轉

body[0]->ApplyLinearImpulse(b2Vec2(50,50), body->GetWorldCenter()); 

凡身體是連接到雪碧和b2ve2你的身體( x,y)是 方向 。