![]() |
Комбинация клавиш
Всем привет! Подскажите пожайлуста, как можно в блитце задавать комбинации клавиш? Например вперед, впред+пробел или А, A+D, S. То есть как в файтингах. Заранее спасибо.
|
Ответ: Комбинация клавиш
If KeyDown(KEYFWD1) And KeyDown(KEYDWN1) Then...
|
Ответ: Комбинация клавиш
Нет, не просто 2 клавиши вместе, а последовательность, например для удара ножницами игрок нажмёт вперёд, а потом вперёд+А.
|
Ответ: Комбинация клавиш
Необходимо запоминать ASCII код нескольких последних нажатых клавиш и выполнять проверку в цикле
Пример Код:
if (key(0)=57 and key(1)=31 and key(2)=33) then... |
Ответ: Комбинация клавиш
Цитата:
|
Ответ: Комбинация клавиш
Я бы сделал немного иначе. А именно, есть стандартные клавиши, к примеру Лево, Вверх, Вправо, Вниз, А, Б.
Далее, сделал бы маленький скриптик, где прописанны какие нада клавиши и т.п. Затем список (правдо это на БМ просто, на б3д, массивом можно). Далее что вносится в список, изначально все приёмы, производя некое действие, все приёмы где позиция(к примеру первое действие в приёме) и действие не совпадает, то удаляем из списка указатель на приём. Остаются естественно те которые возможны в реализации, далее если не истекло время, и сделано следующее действие, запускаем опять этот же процесс, уже проверяя на второе действие, и опять же отсекаем всё остальное. Но тут возникает в драках 2 моммента, первое, это какраз приёмы быстрые, либо это серия ударов, это 2 разницы, т.к. приёмы быстрые, могут быть максимум из 3 последовательных действий, такой приём всегда начинается с направлений (движений), и заканчивается уже на кнопки ударов. Нужно это учитывать. А также есть моммент такой, что приёмы идут как серия ударов, поэтому нужно также продумывать их, дабы они правильно пересикались и небыли с одинаковыми началами, но разными приёмами.. :) Короче говоря, применение действий уже будет происходить сразу по началу выполнения комбинации (если это не быстрый приём). Да и использовать в данном случае And, Or и сами прямые функции получения нажатия\зажатия кнопок, я настоятельно не рекомендую. Тут как никогда, нужно изначально привязывать всё к переменным, и использовать затем их, либо как обычно будут баги и т.п. с инпутом, которые в подобных ситуациях частенько всплывают, сбивая с толку. |
Ответ: Комбинация клавиш
Цитата:
|
Ответ: Комбинация клавиш
2MoKa Спасибо, твой способ обдумаю. Пока использую такой код (просто для понятия принципа)
If KeyHit(RP) And AnimSeq(player)=stoyka Animate (player,3,1.3,punch1,transition) combo1=1 combo1_time=MilliSecs() EndIf If combo1=1 And MilliSecs()-combo1_time<300 And KeyDown(RS) And Keyhit(RP) Then combo1=2 If combo1=2 And AnimTime(player)>25 combo1=0 Animate(player,3,0.5,punch2,transition) If MilliSecs()-combo1_time>600 Then combo1=0, где RP(Right Punch)=76 - кнопка Num5, и RS(Right Step)=32 - кнопка D. То есть, при нажатии клавиши RP идёт удар рукой(punch1) и если после неё в течении 300 мс нажато RS+RP идёт сильный удар с выпадом(punch2). Но вот в чём беда, второе событие KeyHit(RP) не срабатывает, а если вместо него написать keyDown: If combo1=1 And MilliSecs()-combo1_time<300 And KeyDown(RS) And KeyDown(RP) Then combo1=2, то комбо срабатывает сразу при нажатии RS+RP(combo1 сразу становится равное 2). У кого то есть соображения на этот счёт? |
Ответ: Комбинация клавиш
Цитата:
|
Ответ: Комбинация клавиш
Цитата:
|
Ответ: Комбинация клавиш
viper86, нелюблю хлебом кормить, а когда ленятся - нужно отсекать..
Код:
IKhA=KeyHit(..) |
Ответ: Комбинация клавиш
Хм, не судите строго, но первое что пришло в голову: создаем эталоны типа
(код клавиши_1),(допуск времени до след. нажатия_1),(код клавиши_2),(допуск времени до след. нажатия_2)... и помещаем их в массивы, далее создаем кеш(например типом, но может и массив покатит) и заносим туда каждое нажатие со сдвигом, после каждого сдвига сверяем с эталонами. Задержки можно поставить и константой если для джойстика. Ток насколько тормозно выйдет на Блитце незнаю..:dontknow: |
Ответ: Комбинация клавиш
Цитата:
А вообще, большое спасибо всем, что помогаете. Я читаю много форумов про блиц, этот самый хороший. |
Ответ: Комбинация клавиш
viper86, респект тебе за то что реально сам учишся - это лучший метод!
Задавай ещё вопросы, такие как этот, потому что если честно этот вопрос интерестен тем что он не глупый, и имеет несколько реализаций. Драки пишешь? |
Ответ: Комбинация клавиш
Вложений: 1
Цитата:
|
Часовой пояс GMT +4, время: 15:19. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot