Как сделать так, чтобы по нажатию мышкой (тапом) несколько раз, персонаж ускорялся. Например, на денди была игра Hyper Sports (Прыжки в длину, бег на 100 м и тд).
Для этого нужно отслеживать кол-во кликов мыши или тапов. В случае необходимости нажатий/тапов именно подряд, то обнуляем счетчик нажатий при отсутствии тапов/нажатий какое-то время.
При каждом нажатии/тапе проверяем значение счетчика. Если он равен необходимому количеству для активации ускорения, то обнуляем счетчик и придаем ускорение персонажу - увеличиваем его скорость.
Вопрос достаточно общий, потому и ответ получается тоже довольно-таки общим... Будет код - будет конкретика.
UPD
Если скорость должна увеличиваться при КАЖДОМ нажатии, то какую-нибудь проверку максимальной скорости стоит делать только в том случае, если есть ограничение максимальной скорости. Если ограничения нет, то вполне достаточно отдельно хранить "базовую" скорость. Я бы сделал примерно так:
public class PlayerController
{
//для данной немного абстрактной ситуации для удобства редактирования коэффициентов все переменные общедоступные. в финальной версии лучше все "лишнее" объявить с модификатором private
public float speedDefault = 10.0f; //Базовая скорость
public float boostAtTab = 0.5f; //Ускорение за 1 нажатие
public float slowAtSecond = 5.0f; //Замедление в секунду
public float speedCurrent; //Текущая скорость
public bool isInit = false;
private void Update()
{
if (isInit)
{
//Здесь код перемещения за кадр, где должна учитываться текущая скорость speedCurrent;
//...
}
}
//Инициализация, в конкретном случае должна быть вызвана вручную каким-либо образом
public void Initialize()
{
isInit = true;
speedCurrent = speedDefault;
StartCoroutine(SpeedControl());
}
//Придаем ускорение. Нужно вызывать этот медод при каждом нажатии/тапе
public void OnBoost()
{
speedCurrent += boostAtTab;
}
//Сопрограмма контроля скорости - постоянно снижает, но не ниже скорости "по умолчанию"
private IEnumerator SpeedControl()
{
while (isInit)
{
if (speedCurrent > speedDefault)
{
speedCurrent -= slowAtSecond * Time.deltaTime;
if (speedCurrent < speedDefault)
speedCurrent = speedDefault;
}
yield return null;
}
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости