Войти на сайт

Авторизация, ждите ...
×

ТЕМА: [MV][MZ] Управление по WASD

[MV][MZ] Управление по WASD 1 год 3 мес. назад #129454

  • Phileas
  • Phileas аватар
  • Вне сайта
  • Мастер
  • Сообщений: 188
  • Спасибо получено: 277
  • Проект месяца 2 местоПроект месяца 1 местоВетеранПроект месяца 3 место
Добавить поддержку клавиш W, A, S, D клавиатуры легко в MV и MZ.

Для этого достаточно добавить в проект такой код:
(function () {
    var replacedKeyMapper = {
      87: 'up',
      65: 'left',
      83: 'down',
      68: 'right',
      69: 'pagedown',
    };
 
    for (i in replacedKeyMapper) {
      Input.keyMapper[i] = replacedKeyMapper[i];
    }
})();

Здесь мы также "перекинули" стандартный функционал клавиши W на E.

Вы можете скачать файл тут и добавить его в проект, как плагин.

У каждой клавиши есть числовой код. Представим, что в движке они помечаются маркерами. Например, стрелка вверх помечена маркером 'up'. Если игрок нажимает на эту стрелку, движок видит срабатывание маркера 'up' и обрабатывает это событие.

Маркеры задаются через словарь. Эта структура данных состоит из пар ключ-значение. Здесь ключ - числовой код клавиши, а значение - маркер. Все ключи уникальные, они не могут повторятся. Значения - могут.

Таким образом, несколько клавиш могут быть помечены одинаковым маркером. Это позволяет нам одновременно поддерживать движение как по стрелкам, так и по WASD.

При желании, вы можете добавлять свои пары ключ-значение в объект replacedKeyMapper из кода выше.

Вот код из файла движка rmmz_core.js:
Input.keyMapper = {
    9: "tab", // tab
    13: "ok", // enter
    16: "shift", // shift
    17: "control", // control
    18: "control", // alt
    27: "escape", // escape
    32: "ok", // space
    33: "pageup", // pageup
    34: "pagedown", // pagedown
    37: "left", // left arrow
    38: "up", // up arrow
    39: "right", // right arrow
    40: "down", // down arrow
    45: "escape", // insert
    81: "pageup", // Q
    87: "pagedown", // W
    88: "escape", // X
    90: "ok", // Z
    96: "escape", // numpad 0
    98: "down", // numpad 2
    100: "left", // numpad 4
    102: "right", // numpad 6
    104: "up", // numpad 8
    120: "debug" // F9
};
Здесь вы можете увидеть все доступные по умолчанию маркеры. Это полезно знать, если вы хотите добавить какой-то клавише маркер.

Есть аналогичный словарь для геймпада:
Input.gamepadMapper = {
    0: "ok", // A
    1: "cancel", // B
    2: "shift", // X
    3: "menu", // Y
    4: "pageup", // LB
    5: "pagedown", // RB
    12: "up", // D-pad up
    13: "down", // D-pad down
    14: "left", // D-pad left
    15: "right" // D-pad right
};

Можно также создать обработчик нажатий на клавиатуру и там смотреть на непосредственно код нажатой клавиши. Полезно, если у движка нет подходящего стандартного маркера. Но это уже для продвинутых пользователей ;) Пишите, если нужен гайд по этому.

Коды клавиш легко находятся в интернете. Можно смотреть их, к примеру, тут. Нужны DEC-коды (то есть десятичные).

Ещё важный совет. Не меняйте код движка, не редактируйте стандартные файлы. Мало того, что это запрещено правообладателем, это также неудобно и небезопасно. Что, если вы ошибётесь или захотите откатить изменения? JavaScript позволяет переопределять всё, что удобно. Поэтому для изменения кода движка используйте плагины.

Пишите ваши вопросы в этой теме, если остались.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: VarVarKa, Alx_Yago, IGPB
Время создания страницы: 0.295 секунд