2011-12-26 7 views
0

私のゲームでは2秒ごとに新しいボディを作成し、このBox2dボディにインパルスを適用します。Box2d、Cocos2D - 同じボディ、同じインパルス、別の効果

私の問題は、その衝動はまだ同じであるが、体は、2つの方法で動作します。

それはゆっくりと上向きになり、または別の時間が、それはすぐに

私は体がで動作するようにしたい倒れます衝動後も同じ方法で可能ですか?

コード:

- (void)newBullet 
{ 
CGPoint touchedAt; 
touchedAt.x = 184; 
touchedAt.y = 1200; 
bullet = [CCSprite spriteWithSpriteSheet:spriteSheet rect:CGRectMake(586, 719, 32, 32)]; 
[spriteSheet addChild: bullet z: 10 tag: 8]; 

bullet.position = ccp(touchedAt.x , touchedAt.y); 
bullet.rotation = 90; 
bulletBodyDef.type = b2_dynamicBody; 
bulletBodyDef.position.Set(touchedAt.x/PTM_RATIO, touchedAt.y/PTM_RATIO); 
bulletBodyDef.userData = bullet; 
bulletBodyDef.angle = CC_DEGREES_TO_RADIANS(90); 
bulletBody = _world->CreateBody(&bulletBodyDef); 

b2CircleShape bulletShape; 
bulletShape.m_radius = bullet.contentSize.width/PTM_RATIO/2; 

b2FixtureDef bulletShapeDef; 
bulletShapeDef.shape = &bulletShape; 
bulletShapeDef.density = 0.0f; 
bulletShapeDef.friction = 0.9f; 
bulletShapeDef.restitution = 0.0f; 
bulletShapeDef.isSensor = false; 
bulletFixture = bulletBody->CreateFixture(&bulletShapeDef); 

b2Vec2 force = b2Vec2(6.0f, 4.0f); 
bulletBody->ApplyImpulse(force, bulletBody->GetPosition()); 
} 

ビデオ(低品質のために申し訳ありませんが、あなたは私が意味するものを見ることができます) http://vimeo.com/34215327

答えて

0

私はあなたがこのメソッドを呼び出しているかわからないが、私はことを示唆していますメソッドを呼び出す場所とbox2dのタイムステップをどこで行うかをより詳細に制御できますが、それは関連しないかもしれませんが、チェックアウトする価値はあります。何が起こっているのかは、あなたが力をリセットするまで体の速度を決定するソルバが呼び出されないので、インパルスが適用されていないということです。

+0

"あなたが力を回復するまで"アップス..私はそれを忘れてしまった。今は素晴らしい作品です、ありがとう – Dawid

関連する問題