Вы берете 26 изображений Sprite для каждого символа алфавита (предпочтение будет иметь изображение .png), затем определяете фиксацию каждого символа (с помощью vertexHelper. См. THIS Ссылка для получения дополнительной информации о vertextHelper ), как для 'I' это будет:
//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_AdjustmentsBody
равно b2Body
, а obstacle_AdjustmentsFixture
равно b2Fixture
.
ЗДЕСЬ ФОРМА X:
//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);
}
}