2011-12-26 37 views
0

在我的游戏中,每隔2秒钟我创建一个新身体,然后对这个Box2d身体施加冲动。Box2d,Cocos2D - 相同的身体,相同的冲动,但不同的效果

我的问题是冲动还是一样,但身体在两个方面的表现:

它慢慢地从下至上,或其他时间很快倒下

我想身体的行为冲动之后也是如此,有可能吗?

代码:

- (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

“直到你重置力量”Ups ..我忘了它。现在效果很好,非常感谢 – Dawid 2011-12-26 21:13:43