0

現在、ボールが前後に跳ねるプログラムがあります。バウンスの速さを知るために、私はこれを作りました:

b2Vec2 velocity = blueCircleBody->GetLinearVelocity();
float constantSpeed = velocity.Length();

NSLog(@"%.f", constantSpeed);

これは tick: 関数内にあります。毎秒、ボールがどれだけ速く動いているかを確認したいと思います。出力ウィンドウで気がついたように、ボールは数分後に減速しているように見えます。

2012-12-16 11:29:10.458 Bubble Fill V1[31623:c07] 30
2012-12-16 11:29:11.474 Bubble Fill V1[31623:c07] 30
2012-12-16 11:29:12.475 Bubble Fill V1[31623:c07] 30
2012-12-16 11:29:13.492 Bubble Fill V1[31623:c07] 24
2012-12-16 11:29:14.525 Bubble Fill V1[31623:c07] 24

ボールがランダムに 30 から 24 になった理由はありますか?

さらに、別の問題があります。すべて同じデータでプログラムを再起動すると、原因不明のボールの速度が異なります。これは、私が使用する衝動/力が、それがどれだけ速く進んでいるかを決定しないことを意味します.

ボールの詳細は次のとおりです。

    blueCircle = [CCSprite spriteWithFile:@"blueCircle.png"];
blueCircle.position = ccp(winSize.width/4, winSize.height/4);
blueCircle.tag = 2;
[self addChild:blueCircle];




blueCircleBodyDef.type = b2_dynamicBody;
//Find a way to make the BoundingBox/GroundBox to not be affected by the Force of the Walls
blueCircleBodyDef.position.Set(winSize.width/4/PTM_RATIO, winSize.height/4/PTM_RATIO);
//blueCircleBodyDef.position.Set(blueCircle.position.x/PTM_RATIO, blueCircle.position.y/PTM_RATIO);
blueCircleBodyDef.userData = blueCircle;
blueCircleBody = world->CreateBody(&blueCircleBodyDef);

float blueCircleRadius = blueCircle.contentSize.width/2 * blueCircle.scale;
blueCircleShape.m_radius = blueCircleRadius/PTM_RATIO;


blueCircleFixtureDef.shape = &blueCircleShape;
blueCircleFixtureDef.density = 1.0f;
blueCircleFixtureDef.friction = 0.0f;
blueCircleFixtureDef.restitution = 1.0f;
blueCircleBody->CreateFixture(&blueCircleFixtureDef);





force.Set(0, 140);
//blueCircleBody ->ApplyLinearImpulse(force, blueCircleBodyDef.position);
//blueCircleBody->SetLinearVelocity(force);
blueCircleBody->SetGravityScale(0);
blueCircleBody->SetLinearVelocity(force);
4

0 に答える 0