0
A
回答
4
你拿26圖像雪碧字母表(PNG圖片者優先),然後定義每個字符的夾具,每個字符(與vertexHelper的幫助,請參閱THIS鏈接,瞭解更多關於vertextHelper)像 '我' 這將是:
//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);
}
}
相關問題
- 1. Cocos2d不規則形狀精靈
- 2. cocos2d - 只顯示精靈的一部分 - 不規則形狀
- 3. 如何製作不規則形狀精靈的矩形?
- 4. cocos2d中的精靈邊界?
- 5. 在cocos2d中界定一個精靈
- 6. 代表不規則形狀的遊戲世界
- 7. 在cocos2d中填充帶有方形紋理的多邊形形狀的精靈
- 8. 精靈的自定義形狀
- 9. 渲染3D世界中的2D精靈?
- 10. 物理世界的界限
- 11. 如何在cocos2d中設置矩形精靈的圓形?
- 12. Cocos2d:純色矩形精靈?
- 13. 如何在Cocos2d android中對移動的精靈做出矩形?
- 14. cocos2d如何組合精靈
- 15. 精靈落在cocos2d
- 16. 在Cocos2d中縮放精靈
- 17. Cocos2d-x在指定的矩形區域中刪除精靈
- 18. 如何檢測不規則形狀的邊界?
- 19. 訪問紋理的矩形在cocos2d的精靈
- 20. 不規則形狀
- 21. 在OpenGL中繪製3D世界中的透明精靈(LWJGL)
- 22. 如何獲得cocos2d中的精靈?
- 23. 如何重疊cocos2d中的精靈
- 24. 如何點亮cocos2d中的精靈?
- 25. 如何掩蓋cocos2d中的精靈?
- 26. 用cocos2d覆蓋圓形的精靈3
- 27. CoCos2D非矩形精靈的交集
- 28. Box2D形狀通過世界
- 29. 在精靈之外的定位點上旋轉cocos2d精靈
- 30. 如何在cocos2d中跟蹤具有不規則形狀圖像邊界的圖像的交集?
這是否工作凹面形狀(如字符'X')? – ohho
哦,是的,這將適用於任何形狀的任何形狀。只需使用vertexHelper來定義形狀。 – rptwsthi
謝謝!我看到'X'被分成兩條腿。連續凹形會發生什麼情況,比如'C',vertexHelper是否可以很好地處理這個問題? – ohho