私は、重力を持つbox2dでcocos2dの世界を持っています。 各スプライトのボディを追加するために、私は関数を呼び出してスプライトを送ります。世界で1つのスプライトにゼロの重力を適用する
sprite1は重力に従って移動する必要がありますが、スプライト1が重なることなく静的でなければなりません。
どのように私はsprite1/body gravityをゼロに設定する必要がありますか?
私の問題は、体のために同じ機能を使用してすべてのスプライト:
- (void)addBoxBodyForSprite:(CCSprite *)sprite {
b2BodyDef spriteBodyDef;
spriteBodyDef.type = b2_dynamicBody;
spriteBodyDef.position.Set(sprite.position.x/PTM_RATIO,sprite.position.y/PTM_RATIO);
spriteBodyDef.userData = sprite;
spriteBody = world->CreateBody(&spriteBodyDef);
b2PolygonShape spriteShape;
spriteShape.SetAsBox(sprite.contentSize.width/PTM_RATIO/2,sprite.contentSize.height/PTM_RATIO/2);
b2FixtureDef spriteShapeDef;
spriteShapeDef.shape = &spriteShape;
spriteShapeDef.density = 10.0;
spriteShapeDef.isSensor = true;
spriteBody->CreateFixture(&spriteShapeDef);
}
私はスプライト1の開始時に重力を適用したいが、私はまたsprite2のためのボディを作成したいです、なぜなら後でそれは世界の影響を受けます。
開始時に2つのボディを作成したら、どうやってsprite2だけが落ちるのを止めますか?
ありがとうございます。
は素晴らしいですが、スリープ状態になると、他のスプライトがヒットしたときに連絡先リスナーがそれを検出できますか? – Curnelious
睡眠体は物理的な世界の設定には影響されませんが、接触を検出すると起きます。私は完全にはわかっていませんが、私はあなたの連絡先を通って行くと体を起こし、次のチェックで両方とも連絡先を登録すると期待します。 –
ボディを非アクティブに設定した場合、連絡先によってウォークアップされません。 –