我正在尝试为我正在尝试开发的游戏创建 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 整除,速度似乎就不会增加,而且我也无法为简单的级别获得恒定的速度。它开始很快,然后逐渐减慢。我在这里做错了什么?请帮忙。