Смена управления в игре (Keyboard Key Code)

другие уроки, мануалы, советы по Construct 2

Сообщение Смена управления в игре (Keyboard Key Code)
» 18 мар 2013, 00:59

Для своей игры делаю возможность менять управление прямо в игре, в настройках. Думаю многим будет полезно узнать как это делается.

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

Условия:

Изображение

  • Key code is down (клавиша-код зажата) - тоже самое, что и Key is down только вместо клавиши вы вписываете код клавиши (например, 8 это backspace).
  • On key code pressed (клавиша-код нажата один раз) - тоже самое, что и On key pressed, только вместо клавиши код.
  • On key code released (клавиша-код отжата) - тоже самое, что и On key released, только вместо клавиши код.

Действия:

Отсутствуют (они и не нужны).

Выражения:

Изображение

  • LastKeyCode (текущая нажатая клавиша-код) - позволяет получить значение (в виде номера) текущей нажатой клавиши на клавиатуре. С помощью этого выражения можно записывать нажатие клавиш в переменную, а затем получать из нее клавишу для выполнения действия в игре. Например прыжка или ходьбы.
  • StringFromKeyCode (строка из клавиши-кода) - позволяет получить оригинальное название клавиши из клавиши-кода. С помощью этого выражения вы можете из цифр получить название клавиши обратно, например, если клавиша-код была 65, то вы получите название клавиши A. Учтите, что системные клавиши, например, Enter или Space не выводятся в виде строки. У них можно получить только номер.

Вот все клавиши-коды, которые мне удалось получить:

 Клавиши-коды >>>
Клавиша-код - Клавиша на клавиатуре:

8 - backspace
9 - tab
13 - enter
16 - shift
17 - ctrl
18 - alt
19 - pause break
20 - caps lock
27 - esc
32 - space
33 - page up
34 - page down
35 - end
36 - home
37 - left
38 - up
39 - right
40 - down
45 - insert
46 - delete
48 - 0
49 - 1
50 - 2
51 - 3
52 - 4
53 - 5
54 - 6
55 - 7
56 - 8
57 - 9
65 - a
66 - b
67 - c
68 - d
69 - e
70 - f
71 - g
72 - h
73 - i
74 - j
75 - k
76 - l
77 - m
78 - n
79 - o
80 - p
81 - q
82 - r
83 - s
84 - t
85 - u
86 - v
87 - w
88 - x
89 - y
90 - z
91 - windows
92 - windows
93 - text
96 - num 0
97 - num 1
98 - num 2
99 - num 3
100 - num 4
101 - num 5
102 - num 6
103 - num 7
104 - num 8
105 - num 9
106 - num *
107 - num +
109 - num -
110 - num del
111 - num /
112 - f1
113 - f2
114 - f3
115 - f4
116 - f5
117 - f6
118 - f7
119 - f8
120 - f9
121 - f10
122 - f11
123 - f12
144 - num lock
145 - scroll lock
186 - ;
187 - +
188 - ,
189 - -
190 - .
191 - ?
192 - ё
219 - [
220 - \
221 - ]
222 - э

Исходник демонстрирует работу клавиш-кодов, в нем вы можете поменять клавишу прыжка. Когда запустите исходник, кликните мышкой по квадрату с надписью: "Задать новую клавишу прыжка".

keyCode.capx
(19.48 КБ) Скачиваний: 1060
Construct 2 r122 BETA

Исходник в самой последней бета-версии программы r122 на сегодня, так как только в нее добавили новое выражение StringFromKeyCode. Для тех, кто не хочет переходить на новую бета-версию прилагаю скриншоты событий:

Изображение


Изображение


Пишите, если будут вопросы.
Последний раз редактировалось Developer 18 мар 2013, 03:20, всего редактировалось 1 раз.
Аватара пользователя

Игродел
Сообщений: 501
Я тут с 04 янв 2013
Репутация 77 [ ? ]

Сообщение Re: Смена управления в игре (Keyboard Key Code)
» 18 мар 2013, 01:09

Developer, видел коды, примерно понимал, но ни разу не юзал! Теперь знаю куда идти, если вдруг что не так! Спасибо! :good2: :good2: :good2:
Аватара пользователя

Игродел
Сообщений: 398
Я тут с 08 янв 2013
Откуда: Мск
Репутация 226 [ ? ]

Сообщение Re: Смена управления в игре (Keyboard Key Code)
» 18 мар 2013, 03:27

Сейчас задался еще одним вопросом - как симулировать нажатия клавиш? (кроме тех, что в поведениях). Вот интересно, как сделать, чтобы при вызове переменной происходила симуляция нажатия клавиши, например, Alt+f4 ? Дело в том, что сейчас у node-webkit нету опции выйти из приложения, а объект Browser не дает результата (событие Close не работает). Если получиться симулировать определенные нажатия клавиши, то проблему можно решить. И не только эту.
Аватара пользователя

Игродел
Сообщений: 501
Я тут с 04 янв 2013
Репутация 77 [ ? ]

Сообщение Re: Смена управления в игре (Keyboard Key Code)
» 18 мар 2013, 11:43

маладцом! :good2:
Аватара пользователя

Администратор
Сообщений: 7335
Я тут с 05 сен 2012
Двиг: C2
Репутация 544 [ ? ]

Сообщение Re: Смена управления в игре (Keyboard Key Code)
» 18 мар 2013, 14:22

Developer писал(а):Сейчас задался еще одним вопросом - как симулировать нажатия клавиш? (кроме тех, что в поведениях). Вот интересно, как сделать, чтобы при вызове переменной происходила симуляция нажатия клавиши, например, Alt+f4 ? Дело в том, что сейчас у node-webkit нету опции выйти из приложения, а объект Browser не дает результата (событие Close не работает). Если получиться симулировать определенные нажатия клавиши, то проблему можно решить. И не только эту.


Я не уверен, но попробуй использовать JavaScript
window.close - информация
Аватара пользователя

Игродел
Сообщений: 1343
Я тут с 06 сен 2012
Репутация 207 [ ? ]

Сообщение Re: Смена управления в игре (Keyboard Key Code)
» 18 мар 2013, 16:47

Damir007, спасибо. Попробую.+
Аватара пользователя

Игродел
Сообщений: 501
Я тут с 04 янв 2013
Репутация 77 [ ? ]

Сообщение Re: Смена управления в игре (Keyboard Key Code)
» 26 июл 2013, 19:38

Developer, еще
 Посмотр
12 - *без названия*, получается, если нажать на "5" при выключенном нампаде
41 - )
42 - *
43 - +
44 - ,
47 - /
58 - :
59 - ;
60 - <
61 - =
62 - >
63 - ?
64 - @
94 - ^
95 - _
108 - l
124 - |
125 - }
126 - ~
161 - ?
162 - ?
163 - ?
164 - ¤
165 - ?
166 - ¦
167 - §
168 - ?
169 - ©
170 - ?
171 - «
172 - ¬
174 - ®
175 - ?
176 - °
177 - ±
178 - ?
179 - ?
180 - ?
181 - µ
182 - ¶
183 - ·
184 - ?
185 - ?
187 - = (исправить вроде как надо)
191 - / (the same, хотя может особенности компаьютера/ос/шрифта, не уверен)
193 - ?
194 - ?
195 - ?
196 - ?
197 - ?
198 - ?
199 - ?
200 - ?
... *в этот момент я прокрутил свой список вниз до 1000ой позиции и понял, что либо бестолку все это перечислять, либо надо как-то этот процесс автоматизировать...*
...
59286 - ?
...

Ниже исходник с 100 000 строк, и, как оказалось, даже 100к - не предел...)))

key_codes.capx
(75.7 КБ) Скачиваний: 535
С2 - r139 Может лагать на "неспешных" машинах, т.к. большой объем инфы
Аватара пользователя

Игродел
Сообщений: 398
Я тут с 08 янв 2013
Откуда: Мск
Репутация 226 [ ? ]

Сообщение Re: Смена управления в игре (Keyboard Key Code)
» 31 июл 2013, 16:43

Ilyko96, я совсем забыл про символы и зажатые клавиши. Спасибо! +
Аватара пользователя

Игродел
Сообщений: 501
Я тут с 04 янв 2013
Репутация 77 [ ? ]

Сообщение Re: Смена управления в игре (Keyboard Key Code)
» 06 авг 2013, 22:19

Вроде как все они соответствуют кейкодам JavaScript http://www.cambiaresearch.com/articles/ ... -key-codes.

Будет полезным добавить в шапку 2 вещи:
1. как недавно выяснилось, JavaScript не видит разницы между левыми и правыми Shift'ами и Ctrl'ами
2. при одновременном нажатии стрелок и клавиш Num Lock'а не детектятся некоторые направления (это проблема клавиатур, а не Констракта).
=> реализовывать управление в файтинге/ футболе для двоих игроков, играющих на 1 клавиатуре надо обходными путями :(

(я джва дня искал ошибку в эвент-листе, собирался в баг-репорт писать. Осознать причину второй проблемы помог товарищ Гилтигирщик)
Аватара пользователя

Участник
Сообщений: 102
Я тут с 05 авг 2013
Лицензия: Personal
Репутация 58 [ ? ]

Сообщение Смена управления в игре (Keyboard Key Code)
» 23 сен 2015, 22:45

Сделать то Я сделал смену кнопок, а как сохранить теперь при выходе из игры свою раскладку подскажите?
Аватара пользователя

Участник
Сообщений: 129
Я тут с 10 ноя 2012
VK: vital
Репутация 5 [ ? ]



Вернуться в Другие уроки по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх