2011-08-11 11 views

答えて

4

あなたはその後、(vertexHelperの助けを借りてvertextHelperについての詳細を知るためTHISリンクを参照してください)、各文字のフィクスチャを定義し、(.pngの画像が好まれる)アルファベットの各文字のための26の画像スプライトを取り、 '私は' それがされるためのように:

//OBSTACLE_Adjustments 
    { 
     CCSprite *sprite = [CCSprite spriteWithFile:@"I.png"]; 
     sprite.position = ccp(96,96); 
     sprite.tag = 2; 
     [self addChild:sprite]; 

     //SHAPE 1: 
     { 
      b2BodyDef bodyDefinition; 
      bodyDefinition.type = b2_dynamicBody; 
      bodyDefinition.position.Set(96/PTM_RATIO, 96/PTM_RATIO); 
      bodyDefinition.userData = sprite; 

      obstacle_AdjustmentsBody= world->CreateBody(&bodyDefinition); 

      // Create body shape 
      b2PolygonShape bodyShape; 
      //row 1, col 1 
      int num = 4; 
      b2Vec2 verts[] = { 
       b2Vec2(6.5f/PTM_RATIO, -25.0f/PTM_RATIO), 
       b2Vec2(6.5f/PTM_RATIO, 27.0f/PTM_RATIO), 
       b2Vec2(-7.5f/PTM_RATIO, 27.0f/PTM_RATIO), 
       b2Vec2(-7.5f/PTM_RATIO, -26.0f/PTM_RATIO) 
      }; 

      bodyShape.Set(verts, num); 

      // Create shape definition and add to body 
      b2FixtureDef bodyFixtureDefinition; 
      bodyFixtureDefinition.shape = &bodyShape; 
      bodyFixtureDefinition.density = 100.0f; 
      bodyFixtureDefinition.friction = 0.01f; 
      bodyFixtureDefinition.restitution = 0.50f;    
      obstacle_AdjustmentsFixture=obstacle_AdjustmentsBody->CreateFixture(&bodyFixtureDefinition);    
     } 
} 

ここobstacle_AdjustmentsBodyb2Bodyあり、そしてobstacle_AdjustmentsFixtureb2Fixtureです。 HERE

はX FOR SHAPE IS:

//OBSTACLE_ALPHABATE 
    { 
     CCSprite *sprite = [CCSprite spriteWithFile:@"X.png"]; 
     sprite.position = ccp(96,96); 
     sprite.tag = 2; 
     [self addChild:sprite]; 

     //SHAPE FIRST LEG OF X: 
     { 
      b2BodyDef bodyDefinition; 
      bodyDefinition.type = b2_dynamicBody; 
      bodyDefinition.position.Set(96/PTM_RATIO, 96/PTM_RATIO); 
      bodyDefinition.userData = sprite; 

      obstacle_AdjustmentsBody= world->CreateBody(&bodyDefinition); 

      // Create body shape 
      b2PolygonShape bodyShape; 
      //row 1, col 1 
      int num = 4; 
      b2Vec2 verts[] = { 
       b2Vec2(108.0f/PTM_RATIO, -71.5f/PTM_RATIO), 
       b2Vec2(56.0f/PTM_RATIO, 2.5f/PTM_RATIO), 
       b2Vec2(47.0f/PTM_RATIO, -3.5f/PTM_RATIO), 
       b2Vec2(96.0f/PTM_RATIO, -75.5f/PTM_RATIO) 
      }; 

      bodyShape.Set(verts, num); 

      // Create shape definition and add to body 
      b2FixtureDef bodyFixtureDefinition; 
      bodyFixtureDefinition.shape = &bodyShape; 
      bodyFixtureDefinition.density = 100.0f; 
      bodyFixtureDefinition.friction = 0.01f; 
      bodyFixtureDefinition.restitution = 0.50f;    
      obstacle_AdjustmentsFixture=obstacle_AdjustmentsBody->CreateFixture(&bodyFixtureDefinition);    
     } 

     //SHAPE SECOND LEG OF X: 
     { 
      b2BodyDef bodyDefinition; 
      bodyDefinition.type = b2_dynamicBody; 
      bodyDefinition.position.Set(96/PTM_RATIO, 96/PTM_RATIO); 
      bodyDefinition.userData = sprite; 

      obstacle_AdjustmentsBody= world->CreateBody(&bodyDefinition); 

      // Create body shape 
      b2PolygonShape bodyShape; 
      //row 1, col 1 
      int num = 4; 
      b2Vec2 verts[] = { 
       b2Vec2(117.0f/PTM_RATIO, -4.5f/PTM_RATIO), 
       b2Vec2(113.0f/PTM_RATIO, -1.5f/PTM_RATIO), 
       b2Vec2(54.0f/PTM_RATIO, -51.5f/PTM_RATIO), 
       b2Vec2(61.0f/PTM_RATIO, -56.5f/PTM_RATIO) 
      }; 

      bodyShape.Set(verts, num); 

      // Create shape definition and add to body 
      b2FixtureDef bodyFixtureDefinition; 
      bodyFixtureDefinition.shape = &bodyShape; 
      bodyFixtureDefinition.density = 100.0f; 
      bodyFixtureDefinition.friction = 0.01f; 
      bodyFixtureDefinition.restitution = 0.50f;    
      obstacle_AdjustmentsFixture=obstacle_AdjustmentsBody->CreateFixture(&bodyFixtureDefinition);    
     } 
} 
+0

は凹面形状(例えば、文字 'X')のためにこの仕事をしていますか? – ohho

+0

ああ、これはどんな種類のどんな形でもうまくいく。 vertexHelperを使って形状を定義するだけです。 – rptwsthi

+0

ありがとう!私は 'X'が2つの足に壊れているのを見ます。連続した凹形状、例えば 'C'とは何が起こるのですか?vertexHelperはこれをうまく扱いますか? – ohho

関連する問題