Вторник, 19 Марта 2024, 08:33

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [354]
Статьи об общих понятиях связанных с созданием игр.
Программирование [82]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [144]
Статьи о программах для создания игр, уроки и описания.
Софт [39]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [16]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [160]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [128]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Какую графическую систему API вы используете?
Всего ответов: 10239
Главная » Статьи » Создание игр

Game Maker: взаимодействие с игроком
Не существует ни одной компьютерной игры, которая не взаимодействовала бы с пользователем (игроком). Стандартный путь решения данного вопроса в Game Maker это поместить действие в события клавиатуры или мыши. Но иногда Вы нуждаетесь в более полном контроле над управлением. Изнутри фрагмента кода Вы можете проверить, нажаты ли клавиши на клавиатуре, проверить позицию мыши и нажаты ли ее кнопки. Обычно данные аспекты проверяются в событии шага некоторого управляемого объекта и используешь соответствующее действие. Существуют следующие переменные и функции:
mouse_x* - X-координата мыши. Не может быть изменена.
mouse_y* - Y-координата мыши. Не может быть изменена.
mouse_button - Нажатая в данный момент кнопка мыши. Как значение использует mb_none, mb_any, mb_left, mb_middle или mb_right.
keyboard_lastkey - Клавиатурный код последней нажатой клавиши. Смотрите ниже - константы клавиатурного кода. Вы можете изменять его, например установить на 0, если Вы нажимаете его.
keyboard_key - Клавиатурный код нажатой в данный момент клавиши (смотри ниже; 0 если нет).
Не существует ни одной компьютерной игры, которая не взаимодействовала бы с пользователем (игроком). Стандартный путь решения данного вопроса в Game Maker это поместить действие в события клавиатуры или мыши. Но иногда Вы нуждаетесь в более полном контроле над управлением. Изнутри фрагмента кода Вы можете проверить, нажаты ли клавиши на клавиатуре, проверить позицию мыши и нажаты ли ее кнопки. Обычно данные аспекты проверяются в событии шага некоторого управляемого объекта и используешь соответствующее действие. Существуют следующие переменные и функции:
mouse_x* - X-координата мыши. Не может быть изменена.
mouse_y* - Y-координата мыши. Не может быть изменена.
mouse_button - Нажатая в данный момент кнопка мыши. Как значение использует mb_none, mb_any, mb_left, mb_middle или mb_right.
keyboard_lastkey - Клавиатурный код последней нажатой клавиши. Смотрите ниже - константы клавиатурного кода. Вы можете изменять его, например установить на 0, если Вы нажимаете его.
keyboard_key - Клавиатурный код нажатой в данный момент клавиши (смотри ниже; 0 если нет).
keyboard_lastchar - Последний нажатый символ (как строка).
keyboard_string - Строка, содержащая последний в большинства 80 печатных символов. Данная строка может содержать только символы печатного типа. Она также корректно отвечает на нажим клавиши backspace, стирая последний символ.
Чтобы проверить, нажата ли определенная клавиша или кнопка мыши Вы можете использовать следующие функции. Это бывает полезно, когда сразу несколько управляющих кнопок нажаты одновременно.
keyboard_check(key) - Возвращает, если нажата клавиша с конкретным клавиатурным кодом.
keyboard_check_direct(key) - Возвращает, если нажата клавиша с конкретным клавиатурным кодом, проверяемая непосредственно аппаратные средства. Результат независим от того какое приложение рассматривается. Она учитывается для еще нескольких проверок. В особенности Вы можете использовать клавиатурные коды vk_lshift, vk_lcontrol, vk_lalt, vk_rshift, vk_rcontrol и vk_ralt, чтобы проверить, нажат ли левый или правый shift, control или клавиша alt. (Она не работает под Windows 95!).
mouse_check_button(numb) - Возвращает, если нажата кнопка мыши (используется как значения mb_none, mb_left, mb_middle или mb_right).
Для виртуальных клавиатурных кодов существуют следующие константы:
vk_nokey - Клавиатурный код представляет, что не нажата никакая клавиша
vk_anykey - Клавиатурный код представляет, что нажата любая клавиша
vk_left - Клавиатурный код для клавиши стрелка "влево"
vk_right - Клавиатурный код для клавиши стрелка "вправо"
vk_up - Клавиатурный код для клавиши стрелка "вверх"
vk_down - Клавиатурный код для клавиши стрелка "вниз"
vk_enter - клавиша ENTER
vk_escape - клавиша ESC
vk_space - клавиша "пробел"
vk_shift - клавиша SHIFT
vk_control - клавиша CTRL
vk_alt - клавиша ALT
vk_backspace - клавиша Backspace
vk_tab - клавиша Tab
vk_home - клавиша Home
vk_end - клавиша End
vk_delete - клавиша Delete
vk_insert - клавиша Insert
vk_pageup - клавиша Pageup
vk_pagedown - клавиша Pagedown
vk_pause - клавиша Pause/Break
vk_printscreen - клавиша Printscreen/SysRq
vk_f1 … vk_f12 - клавиатурные коды для функциональных клавиш F1 - F12
vk_numpad0 … vk_numpad9 - цифровые клавиши на цифровой клавиатуре
vk_multiply - клавиша умножения на цифровой клавиатуре
vk_divide - клавиша деления на цифровой клавиатуре
vk_add - клавиша сложения на цифровой клавиатуре
vk_subtract - клавиша вычитания на цифровой клавиатуре
vk_decimal - клавиша десятичной точки на цифровой клавиатуре.
Для символьных клавиш используют например ord ('A'). (С заглавной буквы). Следующие константы могут использоваться только в keyboard_check_direct:
vk_lshift - клавиша левый Shift
vk_lcontrol - клавиша левый Ctrl
vk_lalt - клавиша левый Alt
vk_rshift - клавиша правый Shift
vk_rcontrol - клавиша правый Ctrl
vk_ralt - клавиша правый Alt
Не работают на старых версиях Windows!
Для примера, предположим что Вы имеете объект, которым пользователь может управлять при помощи клавиш курсора, Вы можете поместить следующую часть кода в событие шага объекта:
{
if (keyboard_check(vk_left)) x -= 4;
if (keyboard_check(vk_right)) x += 4;
if (keyboard_check(vk_up)) y -= 4;
if (keyboard_check(vk_down)) y += 4;
}
Конечно намного проще просто поместить его в событие клавиатуры.
Как наверно Вы уже знаете, в игровых опциях Вы можете указать, должны ли события клавиатура и мыши быть непрерывными или только одиночными (когда пользователь нажимает кнопку или клавишу). Данные функции являются устаревшими. Вы можете установить и изменить это в пределах кода, используя следующие переменные:
keyboard_continuous - Указывает, должны ли события клавиатуры быть непрерывными (1) или нет (0).
mouse_continuous - Указывает, должны ли события мыши быть непрерывными (1) или нет (0).
Имеются три дополнительных функции, связанные со взаимодействием.
keyboard_clear(key) - Очищает состояние клавиши. Это означает, что больше не будет генерироваться событие клавиатуры, пока оно не повторится.
mouse_clear(button) - Очищает состояние кнопки мыши. Это означает, что больше не будет генерироваться событие мыши, пока игрок не отпустит кнопку и не нажмет ее снова.
io_clear() - Очищает все состояния клавиатуры и мыши.
io_handle() - Обрабатывает ввод/вывод пользователя, модифицируя состояние мыши и клавиатуру.
keyboard_wait() - Ожидать пока пользователь не нажмет клавишу на клавиатуре.
Категория: Создание игр | Добавил: Transced (08 Мая 2011) | Автор: Андрей
Просмотров: 15196 | Комментарии: 8 | Рейтинг: 3.2/12 |
Теги: функции, Клавиатурный код, взаимодействие, Взаимодействие с игроком, игроки, Game Maker, GM, GML, программирование
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Game Maker: взаимодействие с игроком», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 8
+0-
6 as3011   (14 Июля 2011 16:59) [Материал]
as3011Ну знаете ли, у меня гм 8 про версия , но справка там на английском, я его конечно немного знаю, здесь поудобней, поэтому автору спасибо.

+0-
7 Transced   (15 Июля 2011 21:56) [Материал]
TranscedПожалуйста)

+0-
8 stalkerya   (06 Марта 2015 20:58) [Материал]
stalkeryaНу знаете ли, существует и русскоязычная справка.

+0-
5 ilya7834   (28 Мая 2011 22:13) [Материал]
ilya7834Куча повторений

+1-
4 tifaso   (17 Мая 2011 11:06) [Материал]
tifasoПомоему очень даже не худо, но я это и так уже знаю.

+5-
3 TakBar   (13 Мая 2011 18:02) [Материал]
TakBarВместо всего этого, лучше бы просто написал "Посмотрите в справке" deal

+8-
2 FadeBaker   (10 Мая 2011 00:57) [Материал]
Автор, не обижайся, но статья действительно бесполезная, ибо это всё - присутствует в справке.

+11-
1 LunarPixel   (09 Мая 2011 20:41) [Материал]
LunarPixelНу блин, какой смысл тупо копировать справку!? Даже не смотря на то, что ты пишешь там немного от себя, это всё равно остается тупым копированием справки. Зачем это надо!? wink

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Noobster
  • AppSalute Creator
  • Grit
  • 3DSTATE Engine
  • BatteryTech
  • Ursina
  • Torque 3D
  • PrBoom-plus
  • Quantum Engine
  • OpenSpace3D
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг