0
26桁の英字の中からスプライトを作成し、それらをフレーム内で互いに衝突させたいとします(たとえば、下の図のXとEのように) 。Cocos2Dフィジックスワールド内で不規則な形のスプライトを定義する方法
26の図形を作成するための推奨方法は何ですか?
26桁の英字の中からスプライトを作成し、それらをフレーム内で互いに衝突させたいとします(たとえば、下の図のXとEのように) 。Cocos2Dフィジックスワールド内で不規則な形のスプライトを定義する方法
26の図形を作成するための推奨方法は何ですか?
あなたはその後、(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_AdjustmentsBody
b2Body
あり、そしてobstacle_AdjustmentsFixture
はb2Fixture
です。 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);
}
}
は凹面形状(例えば、文字 'X')のためにこの仕事をしていますか? – ohho
ああ、これはどんな種類のどんな形でもうまくいく。 vertexHelperを使って形状を定義するだけです。 – rptwsthi
ありがとう!私は 'X'が2つの足に壊れているのを見ます。連続した凹形状、例えば 'C'とは何が起こるのですか?vertexHelperはこれをうまく扱いますか? – ohho