This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Рекомендуємо ознайомитися із загальними принципами роботи введення в Defold, тим, як отримувати введення та в якому порядку воно надходить до ваших файлів скриптів. Докладніше про систему введення читайте в посібнику з оглядом введення.
Тригери миші дають змогу прив’язати введення від кнопок миші та коліщаток прокручування до ігрових дій.

Введення від кнопок миші MOUSE_BUTTON_LEFT, MOUSE_BUTTON_RIGHT і MOUSE_BUTTON_MIDDLE еквівалентне введенню від MOUSE_BUTTON_1, MOUSE_BUTTON_2 і MOUSE_BUTTON_3.
У наведених нижче прикладах використовуються дії, показані на зображенні вище. Як і для будь-якого введення, ви можете називати свої дії введення як завгодно.
Кнопки миші генерують події pressed, released і repeated. Приклад, що показує, як виявляти введення від лівої кнопки миші (натискання або відпускання):
function on_input(self, action_id, action)
if action_id == hash("mouse_button_left") then
if action.pressed then
-- left mouse button pressed
elseif action.released then
-- left mouse button released
end
end
end
Дії введення MOUSE_BUTTON_LEFT (або MOUSE_BUTTON_1) надсилаються також для одиночних дотиків.
Введення від коліщатка миші виявляє дії прокручування. Поле action.value дорівнює 1, якщо коліщатко прокручується, і 0 в іншому разі. (Дії прокручування обробляються як натискання кнопок. Наразі Defold не підтримує введення з точним відстеженням прокручування на сенсорних панелях.)
function on_input(self, action_id, action)
if action_id == hash("mouse_wheel_up") then
if action.value == 1 then
-- mouse wheel is scrolled up
end
end
end
Рух миші обробляється окремо. Події руху миші не надходять, якщо у ваших прив’язках введення не налаштовано хоча б один тригер миші.
Рух миші не прив’язується у прив’язках введення: натомість action_id набуває значення nil, а таблиця action заповнюється позицією миші та зміною цієї позиції.
function on_input(self, action_id, action)
if action.x and action.y then
-- let game object follow mouse/touch movement
local pos = vmath.vector3(action.x, action.y, 0)
go.set_position(pos)
end
end
Тригери одиночних і множинних дотиків доступні на пристроях iOS і Android у нативних застосунках і пакетах HTML5.

Тригери одиночних дотиків не налаштовуються в розділі Touch Triggers прив’язок введення. Натомість тригери одиночних дотиків налаштовуються автоматично, коли ви налаштовуєте введення від кнопки миші MOUSE_BUTTON_LEFT або MOUSE_BUTTON_1.
Тригери множинних дотиків заповнюють таблицю touch усередині таблиці дії. Елементи цієї таблиці мають цілочислові індекси від 1 до N, де N — кількість точок дотику. Кожен елемент таблиці містить поля з даними введення:
function on_input(self, action_id, action)
if action_id == hash("touch_multi") then
-- Spawn at each touch point
for i, touchdata in ipairs(action.touch) do
local pos = vmath.vector3(touchdata.x, touchdata.y, 0)
factory.create("#factory", pos)
end
end
end
Множинним дотикам не можна призначати ту саму дію, що й введенню від кнопки миші MOUSE_BUTTON_LEFT або MOUSE_BUTTON_1. Призначення тієї самої дії фактично перевизначить одиночні дотики й унеможливить отримання будь-яких подій одиночного дотику.
Ресурс Defold-Input дає змогу легко налаштувати віртуальні екранні елементи керування, як-от кнопки й аналогові стіки, з підтримкою множинних дотиків.
Виявлення клацання або дотику користувача на візуальному компоненті (component) — дуже поширена операція, потрібна в багатьох іграх. Це може бути взаємодія користувача з кнопкою чи іншим елементом інтерфейсу або з ігровим об’єктом (game object), наприклад керованим гравцем юнітом у стратегічній грі, скарбом на рівні гри з дослідженням підземель або персонажем, який дає завдання в RPG. Вибір підходу залежить від типу візуального компонента.
Для елементів інтерфейсу є функція gui.pick_node(node, x, y), яка повертає true або false залежно від того, чи перебуває задана координата в межах вузла GUI. Докладніше дивіться в документації API, прикладі наведення вказівника або прикладі кнопки.
Для ігрових об’єктів виявляти взаємодію складніше, оскільки на потрібні обчислення впливають такі чинники, як переміщення камери та проєкція у скрипті рендерингу. Є два загальні підходи до виявлення взаємодії з ігровими об’єктами:
Готове рішення, що використовує об’єкти колізій для виявлення введення користувача й підтримує перетягування та клацання, можна знайти в ресурсі Defold-Input.
В обох випадках потрібно виконувати перетворення між координатами події миші або дотику в екранному просторі та координатами ігрових об’єктів у світовому просторі. Це можна зробити кількома способами: