|
06.12.2008, 11:35
|
#1
|
Нуждающийся
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений (для 123 пользователей)
|
Комбинация клавиш
Всем привет! Подскажите пожайлуста, как можно в блитце задавать комбинации клавиш? Например вперед, впред+пробел или А, A+D, S. То есть как в файтингах. Заранее спасибо.
Последний раз редактировалось viper86, 06.12.2008 в 12:02.
|
(Offline)
|
|
06.12.2008, 21:13
|
#2
|
Разработчик
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений (для 122 пользователей)
|
Ответ: Комбинация клавиш
If KeyDown(KEYFWD1) And KeyDown(KEYDWN1) Then...
|
(Offline)
|
|
08.12.2008, 10:17
|
#3
|
Нуждающийся
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений (для 123 пользователей)
|
Ответ: Комбинация клавиш
Нет, не просто 2 клавиши вместе, а последовательность, например для удара ножницами игрок нажмёт вперёд, а потом вперёд+А.
|
(Offline)
|
|
08.12.2008, 11:30
|
#4
|
Знающий
Регистрация: 28.07.2008
Адрес: Киев
Сообщений: 228
Написано 61 полезных сообщений (для 191 пользователей)
|
Ответ: Комбинация клавиш
Необходимо запоминать ASCII код нескольких последних нажатых клавиш и выполнять проверку в цикле
Пример
if (key(0)=57 and key(1)=31 and key(2)=33) then...
где key() массив для нажатых клавиш
__________________
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...
|
(Offline)
|
|
08.12.2008, 12:03
|
#5
|
Нуждающийся
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений (для 123 пользователей)
|
Ответ: Комбинация клавиш
Сообщение от Spiderman
Необходимо запоминать ASCII код нескольких последних нажатых клавиш и выполнять проверку в цикле
Пример
if (key(0)=57 and key(1)=31 and key(2)=33) then...
где key() массив для нажатых клавиш
|
Спасибо огромное, то что нужно )))))
|
(Offline)
|
|
08.12.2008, 14:08
|
#6
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Комбинация клавиш
Я бы сделал немного иначе. А именно, есть стандартные клавиши, к примеру Лево, Вверх, Вправо, Вниз, А, Б.
Далее, сделал бы маленький скриптик, где прописанны какие нада клавиши и т.п.
Затем список (правдо это на БМ просто, на б3д, массивом можно).
Далее что вносится в список, изначально все приёмы, производя некое действие, все приёмы где позиция(к примеру первое действие в приёме) и действие не совпадает, то удаляем из списка указатель на приём. Остаются естественно те которые возможны в реализации, далее если не истекло время, и сделано следующее действие, запускаем опять этот же процесс, уже проверяя на второе действие, и опять же отсекаем всё остальное.
Но тут возникает в драках 2 моммента, первое, это какраз приёмы быстрые, либо это серия ударов, это 2 разницы, т.к. приёмы быстрые, могут быть максимум из 3 последовательных действий, такой приём всегда начинается с направлений (движений), и заканчивается уже на кнопки ударов. Нужно это учитывать.
А также есть моммент такой, что приёмы идут как серия ударов, поэтому нужно также продумывать их, дабы они правильно пересикались и небыли с одинаковыми началами, но разными приёмами..
Короче говоря, применение действий уже будет происходить сразу по началу выполнения комбинации (если это не быстрый приём).
Да и использовать в данном случае And, Or и сами прямые функции получения нажатия\зажатия кнопок, я настоятельно не рекомендую. Тут как никогда, нужно изначально привязывать всё к переменным, и использовать затем их, либо как обычно будут баги и т.п. с инпутом, которые в подобных ситуациях частенько всплывают, сбивая с толку.
|
(Offline)
|
|
08.12.2008, 15:37
|
#7
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Комбинация клавиш
Сообщение от Spiderman
Необходимо запоминать ASCII код нескольких последних нажатых клавиш и выполнять проверку в цикле
|
достаточно (и более удобно) scan-кодов
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
08.12.2008, 17:35
|
#8
|
Нуждающийся
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений (для 123 пользователей)
|
Ответ: Комбинация клавиш
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).
У кого то есть соображения на этот счёт?
|
(Offline)
|
|
08.12.2008, 17:45
|
#9
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Комбинация клавиш
Тут как никогда, нужно изначально привязывать всё к переменным, и использовать затем их, либо как обычно будут баги и т.п. с инпутом, которые в подобных ситуациях частенько всплывают, сбивая с толку.
|
Повторюсь..
|
(Offline)
|
|
08.12.2008, 18:10
|
#10
|
Нуждающийся
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений (для 123 пользователей)
|
Ответ: Комбинация клавиш
Сообщение от MoKa
Повторюсь..
|
А можешь пример хоть небольшой написать (или мой изменить), а то я не совсем понимаю, что ты имеешь ввиду.
|
(Offline)
|
|
08.12.2008, 18:35
|
#11
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Комбинация клавиш
viper86, нелюблю хлебом кормить, а когда ленятся - нужно отсекать..
|
(Offline)
|
|
08.12.2008, 22:54
|
#12
|
Разработчик
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений (для 122 пользователей)
|
Ответ: Комбинация клавиш
Хм, не судите строго, но первое что пришло в голову: создаем эталоны типа
(код клавиши_1),(допуск времени до след. нажатия_1),(код клавиши_2),(допуск времени до след. нажатия_2)...
и помещаем их в массивы, далее создаем кеш(например типом, но может и массив покатит) и заносим туда каждое нажатие со сдвигом, после каждого сдвига сверяем с эталонами. Задержки можно поставить и константой если для джойстика. Ток насколько тормозно выйдет на Блитце незнаю..
|
(Offline)
|
|
09.12.2008, 09:49
|
#13
|
Нуждающийся
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений (для 123 пользователей)
|
Ответ: Комбинация клавиш
Сообщение от MoKa
viper86, нелюблю хлебом кормить, а когда ленятся - нужно отсекать..
|
Спасибо, мне этого достаточно (я и сам люблю разбиратся). Я первый раз за помощью на форумы обратился, может кто подобное уже делал и знает, как это делать лучше. А так всё сам )))) (по хелпам и примерам естесно).
А вообще, большое спасибо всем, что помогаете. Я читаю много форумов про блиц, этот самый хороший.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо viper86 за это полезное сообщение:
|
|
09.12.2008, 14:36
|
#14
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Комбинация клавиш
viper86, респект тебе за то что реально сам учишся - это лучший метод!
Задавай ещё вопросы, такие как этот, потому что если честно этот вопрос интерестен тем что он не глупый, и имеет несколько реализаций.
Драки пишешь?
|
(Offline)
|
|
10.12.2008, 13:15
|
#15
|
Нуждающийся
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений (для 123 пользователей)
|
Ответ: Комбинация клавиш
Сообщение от MoKa
viper86, респект тебе за то что реально сам учишся - это лучший метод!
Задавай ещё вопросы, такие как этот, потому что если честно этот вопрос интерестен тем что он не глупый, и имеет несколько реализаций.
Драки пишешь?
|
Да, хочу написать драки типа Tekken. Но для начала пишу простенькую игру, где играешь человечком типа палочка-палочка-шарик (видео прикрепил), а против тебя куча противников. Игра на прохождение, немного рпг элементов (открытие ударов, увеличение здоровья и тд). Сразу писать нормальный файтинг не решился, сначала на маленьком поучусь )))))
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:31.
|