Класс pc.Mouse: movementX/Y, кнопки, колесо

Класс pc.Mouse в библиотеке PlayCanvas предоставляет функциональность для обработки взаимодействий с мышью в игровом движке. Он используется для отслеживания положения мыши, состояния кнопок и других событий, связанных с курсором. Класс активно применяется для создания интерактивных приложений и игр, где важна точность отслеживания действий пользователя.

Позиция мыши: movementX и movementY

Одной из ключевых характеристик, предоставляемых классом pc.Mouse, являются данные о движении мыши. Для этого используются два свойства: movementX и movementY.

  • movementX — значение изменения позиции мыши по оси X за последнее обновление. Это свойство позволяет отслеживать горизонтальное перемещение мыши относительно предыдущего положения.
  • movementY — аналогичное свойство для оси Y, отслеживающее вертикальное перемещение.

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

Пример:

var mouse = new pc.Mouse();
mouse.on(pc.EVENT_MOUSEMOVE, function (event) {
    console.log("Movement on X: " + event.movementX);
    console.log("Movement on Y: " + event.movementY);
});

В этом примере события движения мыши обрабатываются с помощью события pc.EVENT_MOUSEMOVE, и выводятся изменения положения мыши на каждой оси.

Состояние кнопок мыши

Класс pc.Mouse позволяет отслеживать состояние кнопок мыши через свойства и события, связанные с нажатием и отпусканием кнопок. Существует несколько важных методов и свойств, которые можно использовать для работы с кнопками:

  • buttonDown(button) — метод, который возвращает true, если кнопка с индексом button нажата. Индекс кнопок: 0 — левая кнопка, 1 — правая кнопка, 2 — средняя кнопка.
  • isPressed(button) — аналогичное свойство, которое также сообщает, нажата ли кнопка. Однако это свойство может быть полезно для более сложных сценариев, где нужно отслеживать длительное нажатие.

Пример:

var mouse = new pc.Mouse();
mouse.on(pc.EVENT_MOUSEDOWN, function (event) {
    if (event.button === pc.MOUSEBUTTON_LEFT) {
        console.log("Левая кнопка мыши нажата");
    }
});

Здесь при нажатии на левую кнопку мыши выводится сообщение в консоль.

Колесо мыши

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

  • wheel — событие, которое срабатывает при прокрутке колеса мыши.
  • wheelDelta — значение, которое указывает на количество прокрученных “единиц”. Это свойство возвращает положительные значения для прокрутки вверх и отрицательные для прокрутки вниз.

Пример:

var mouse = new pc.Mouse();
mouse.on(pc.EVENT_MOUSEWHEEL, function (event) {
    console.log("Колесо прокручено на: " + event.wheelDelta);
});

Этот код отслеживает прокрутку колеса мыши и выводит количество прокрученных единиц.

Обработчики событий

Для реализации различных взаимодействий с мышью в PlayCanvas необходимо подписываться на соответствующие события. В классе pc.Mouse доступны несколько типов событий:

  • pc.EVENT_MOUSEMOVE — событие, которое срабатывает при движении мыши.
  • pc.EVENT_MOUSEDOWN — событие, которое срабатывает при нажатии на кнопку мыши.
  • pc.EVENT_MOUSEUP — событие, которое срабатывает при отпускании кнопки мыши.
  • pc.EVENT_MOUSEWHEEL — событие, которое срабатывает при прокрутке колеса мыши.

Подписка на эти события осуществляется с помощью метода on(), а отмена — с помощью метода off().

Пример подписки на события:

var mouse = new pc.Mouse();

mouse.on(pc.EVENT_MOUSEMOVE, function (event) {
    console.log("Мышь движется!");
});

mouse.on(pc.EVENT_MOUSEDOWN, function (event) {
    console.log("Нажата кнопка: " + event.button);
});

mouse.on(pc.EVENT_MOUSEUP, function (event) {
    console.log("Отпущена кнопка: " + event.button);
});

mouse.on(pc.EVENT_MOUSEWHEEL, function (event) {
    console.log("Прокручено на: " + event.wheelDelta);
});

Здесь создаются обработчики для различных типов событий и выводятся соответствующие сообщения в консоль.

Поддержка нескольких кнопок

Когда требуется обрабатывать несколько кнопок одновременно, PlayCanvas предоставляет простое средство для отслеживания, какие кнопки были нажаты в момент события. Например, можно использовать event.buttons для получения состояния всех кнопок мыши.

var mouse = new pc.Mouse();
mouse.on(pc.EVENT_MOUSEDOWN, function (event) {
    console.log("Нажаты кнопки: " + event.buttons);
});

Значения свойств event.buttons представляют собой битовую маску, которая указывает, какие кнопки нажаты в момент события.

Заключение

Работа с классом pc.Mouse в PlayCanvas предоставляет разработчикам гибкие инструменты для обработки взаимодействий с мышью. С помощью свойств для отслеживания положения курсора, состояния кнопок и прокрутки колеса мыши можно создавать динамичные и интерактивные игры и приложения. Обработчики событий, такие как pc.EVENT_MOUSEMOVE, pc.EVENT_MOUSEDOWN, и другие, обеспечивают точную настройку взаимодействия, а использование свойств типа movementX, movementY, и wheelDelta позволяет детально отслеживать изменения.