Двойное нажатие клавиши

Общие вопросы о Unity3D

Двойное нажатие клавиши

Сообщение Rulz009 22 май 2017, 21:06

Добрый вечер.
Такая проблема. При одном нажатии SPACE игрок делает прыжок. При двойном нажатии SPACE (то есть быстро нажать дважды одну клавишу) он должен прыгнуть выше. Как можно это реализовать?

Другими словами (здесь, при нажатии SPACE переменной num присваивается значение 1):
if(Input.GetButtonDown("Jump")) {
num = 1;
}
Здесь, при нажатии SPACE и клавиши Z переменной num присваивается значение 1):
if(Input.GetButtonDown("Jump") && Input.GetKeyDown(Key.Code.F)) {
num = 1;
}
Как реализовать, что при двойном, последовательном (то есть быстро нажав дважды одну клавишу) нажатии SPACE, переменной присваивалось какое-либо значение?
if(Input.GetButtonDown("Jump") && ????) {
num = 1;
}
Надеюсь, объяснил понятно.
Rulz009
UNец
 
Сообщения: 20
Зарегистрирован: 17 май 2017, 16:56

Re: Двойное нажатие клавиши

Сообщение samana 22 май 2017, 21:08

Запоминайте время при нажатии проблема, а при следующем нажатии пробела проверьте - сколько времени прошло с предыдущего нажатия и если просто меньше заданного интервала, то значит произошел двойной прыжок. Для работы со временем посмотрите API по классу Time.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Двойное нажатие клавиши

Сообщение Valentinus 22 май 2017, 21:10

примерно так: каждый раз запоминаете время нажатия. а перед запоминанием проверяете период от предыдущего нажатия до текущего времени. если период мал, то это дабл-клик

Синтаксис:
Используется csharp
if (clickTime > 0)
if ((Time.realtimeSinceStartup - clickTime) < 0.3f) { // дабл клик
                // двойной прыжок
        }
clickTime = Time.realtimeSinceStartup;
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15