Cocos2d iphone Box2d,Cocos2D-相同的身体,相同的冲动,但效果不同

Cocos2d iphone Box2d,Cocos2D-相同的身体,相同的冲动,但效果不同,cocos2d-iphone,box2d,Cocos2d Iphone,Box2d,在我的游戏中,每2秒我创建一个新的身体,然后我对这个Box2d身体施加一个冲动 我的问题是冲动仍然是一样的,但身体的行为有两种方式: 它缓慢地向上移动,或者另一次快速下降 我希望身体在冲动之后也能有同样的行为,这可能吗 代码: 视频(很抱歉质量不好,但你可以理解我的意思) 我不知道您是如何调用此方法的,但我建议您对调用方法的位置以及执行box2d时间步长的位置有更多的控制,它可能与此无关,但值得检查。可能发生的情况是,没有应用脉冲,因为确定物体速度的解算器在重置力(我假设您正在重置力)之前不会被

在我的游戏中,每2秒我创建一个新的身体,然后我对这个Box2d身体施加一个冲动

我的问题是冲动仍然是一样的,但身体的行为有两种方式:

它缓慢地向上移动,或者另一次快速下降

我希望身体在冲动之后也能有同样的行为,这可能吗

代码:

视频(很抱歉质量不好,但你可以理解我的意思)

我不知道您是如何调用此方法的,但我建议您对调用方法的位置以及执行box2d时间步长的位置有更多的控制,它可能与此无关,但值得检查。可能发生的情况是,没有应用脉冲,因为确定物体速度的解算器在重置力(我假设您正在重置力)之前不会被调用,因此效果将丢失

“直到你重置力”Ups。。我忘了。现在效果很好,非常感谢
- (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());
}