Действия

Действия (Actions) — это абстрагирующая прослойка над различными методами ввода, позволяющая писать единый код для различных устройств — клавиатуры, мыши, геймпада, виртуальных клавиш и всего того, что можно подключить к ct.js. Преимущество действий в том, что одно действие слушает события не только сразу нескольких устройств, но и, например, сразу несколько кнопок одного устройства. Например, можно одновременно слушать WASD и стрелки клавиатуры, а код будет такой, как если бы вы слушали что-то одно (и даже меньше). Если сюда добавится управление с геймпада, то количество вашего кода не изменится.

Чтобы действия работали, нужно подключить модули — провайдеры методов ввода —, а сами действия описываются во вкладке "Настройки", под кнопкой "Действия и методы ввода". Ct.js поставляется с рядом провайдеров ввода по-умолчанию:

  • ct.mouse для отслеживания нажатий кнопок мыши;
  • и ct.keyboard для нажатий клавиатуры.

Все эти модули должны быть включены по-умолчанию для всех новых проектов. Если же нет, активируйте ct.mouse и ct.keyboard во вкладке "Котомоды". Другие котомоды помечаются волшебной иконкой:

Создание новых действий

Чтобы создать новое действие, зайдите во вкладку "Настройки", а затем нажмите на кнопку "Действия и методы ввода". Появится полноэкранная панель, в которой в левой колонке задаются сами действия, а в правой — методы ввода.

Редактор действий

Нажмите кнопку "Добавить действие". Для примера опишем стандартное — и, пожалуй, самое важное в любой игре — действие "Движение". Если у вас платформер, то понадобится всего одно — движение по горизонтали —, а если нет, то может понадобиться и движение по вертикали. Назовите эти действия MoveX и MoveY, для движения по горизонтали и вертикали соответственно.

Добавьте первый метод ввода к движению по горизонтали соответствующей кнопкой. В появившейся форме найдите кнопку A (можно ввести её в строку поиска), а затем нажмите "Выбрать". Проделайте то же самое для кнопок D, ArrowLeft и ArrowRight. Должно получиться такое:

Создание горизонтального движения в ct.js

Но ведь кнопки A и D ведут в разные стороны! Как в коде понять, куда вести игрового персонажа? Дело в том, что в коде действия принимают значения от -1 до 1, и с помощью отрицательных чисел мы можем показать, что нужно идти, скажем, влево, а положительные — вправо. Делается это с помощью колонки множителей. Если указать кнопке A множитель -1, то при её нажатии действие вернёт значение -1, а если у D оставить 1 — то при нажатии D будет единица.

В ct.js значение X растёт слева направо, значение Y — сверху вниз. Если не вращать камеру, и если у вас QWERTY-клавиатура, то A будет вести влево — против движения координаты X —, а D — вправо — вдоль движения координаты X. Поэтому A мы назначим множитель -1, и так же поставим этот множитель стрелке влево.

Добавив ещё одно действие MoveY, множитель -1 нужно будет поставить кнопкам ArrowUp и W.

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

Примеры

Типичная стартовая настройка платформера

Platformer actions setup ct.js

Типичная настройка действий для шутера с видом сверху

Shooter actions setup ct.js