開発しようとしているゲームに 3 つの異なる難易度レベル (イージー、ミディアム、ハード) を作成しようとしています。フラグを使用して 3 (簡単 = 1、中 = 2、難しい = 3) を区別します。今、簡単に速度を一定に設定し、中程度のときに20回の衝突後に速度を上げ、ハードが選択されたときに10回後に速度を上げる方法を見つけようとしています. これは私がそれを実装しようとしている方法です:
-(id)init)
{vel = 8;
counter = 0;}
-(void)update:(ccTime)dt{
_world->Step(dt, vel, 10);
for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) {
if (b->GetUserData() != NULL) {
CCSprite *sprite = (CCSprite *)b->GetUserData();
sprite.position = ccp(b->GetPosition().x * PTM_RATIO,
b->GetPosition().y * PTM_RATIO);
sprite.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle());
}
}
if((contact.fixtureA == _paddleFixture && contact.fixtureB == _ballFixture) || (contact.fixtureA == _ballFixture && contact.fixtureB == _paddleFixture))
{
counter++;
[self updateSpeed];
}
}
-(void)updateSpeed{
if(diffLevel == 2)
{
if(counter%20 == 0)
{
vel = vel + 5;
}
}
else if(diffLevel == 3)
{
if(counter%10 == 0)
{
vel = vel + 10;
}
}
else
{
vel = 8;
}}
カウンターは機能しますが、カウンターが20または10で割り切れるたびに速度が増加しないようで、簡単なレベルでも一定の速度を得ることができません. それは非常に速く始まり、徐々に遅くなります。ここで何が間違っていますか?助けてください。