2016-01-26 7 views
2

Я делаю 2D-реакционную игру с комплектом спрайтов, и снова у меня такая же проблема. Я уже задавал этот вопрос один раз и имел хорошие ответы, и все работало, но теперь я снова застрял.Ускорьте игру после каждых 50 очков

Как и в названии, я хочу, чтобы ускорить игру каждые 50 очков, но она просто ускоряется, когда я получаю правильный номер точки, например, 50, 100, 150 .. Проблема в том, что у меня есть комбо-точки и всегда некоторые моменты больше. Например, от 48 до 51 пункта, поэтому он никогда не ускоряется. Как я могу ускорить игру даже на несколько пунктов? Я имею в виду от 50 до 100 одна скорость и от 100 до 150 и так далее. Вот мой код:

if (points % 10 == 0) { 

    if (readyToSpeed) { 

     speed++; 
     NSLog(@"speed up"); 
     readyToSpeed = NO; 
    } 
} 

Спасибо за помощь! (код в объективе-c, пожалуйста)

EDIT: работает отлично, используя оба ответа вместе.

ответ

3

Вместо приращения скорости вы могли бы сделать это следующим образом:

speed = baseSpeed + (points/50); 

Где baseSpeed ​​это скорость в начале игры.

+0

Как я могу установить ограничение на это? – ccdev

+1

просто выполните условие, если скорость> maxSpeed, speed = maxSpeed ​​ – Knight0fDragon

+0

Теперь это работает как шарм – ccdev

3

Не беспокойтесь о точных 50x нескольких точек, следить за «группы» текущей точки по модулю, чтобы получить ваше значение скорости

cur_speed = points - (points % 50); 

например если они находятся в 203 точках, то cur_speed составляет 203- (203% 50) -> 203-3 -> 200. Если они внезапно перейдут на 308 очков, потому что они попали в сумасшедшие точки, то скорость станет 308- (308 % 50) -> 308-8 -> 300

+0

, который выглядит хорошо, но где и как я могу это реализовать? Потому что я не знаю, как сделать оператор if. – ccdev

+0

Где и когда вам нужно обновить скорость, я полагаю. Если их скорость полностью зависит от их оценки, то вы вычисляете, в какой группе 50x они находятся, и используйте это для обновления скорости. Либо, как @PaulDaPigeon сделал ниже (базовая скорость + общий прирост), или сохранить текущее количество с текущей скоростью = предыдущая скорость + изменение в группе точек. –

0

, если вы хотите только между 50-100 и 100-150 сделать что-то вроде этого:

If points > 50 && points < 100 { 
//speedup code 
}else if points > 100 && points < 150 { 
//speedup code 
} //etc 

Обновление: если вы хотите, чтобы это было бесконечным это сделать :

var speednumber = points/50 
speednumber = speednumber-decimal //some code to cut of the decimals 
setSpeedTo(speednumber+1) //you got to make a function for this 

setSpeedTo (1) будет нормально
2 будет составлять от 50-100
3 100-150
И т.д.