Когда начинаешь работать с Construct 3 и TypeScript, даже простые задачи могут потребовать гораздо больше усилий, чем это кажется на первый взгляд. Например, обработка касания по объекту — задача не такая уж и тривиальная.
Давайте разберемся, как обрабатывать касания по объектам на слое в Construct 3 с использованием TypeScript, шаг за шагом.
актуально для версии Construct 3 r416.2 в других методы API могут отличаться
1. Отслеживаем касание
Для того чтобы отслеживать касания, нам нужно добавить обработчик на событие "pointerdown". Это событие срабатывает при касании экрана.
Однако, чтобы повесить обработчик на событие, его необходимо разместить внутри асинхронной функции, которая выполняется до начала проекта. Мы делаем это в функции OnBeforeProjectStart, которая инициализирует все необходимые действия.
async function OnBeforeProjectStart(runtime: IRuntime) { runtime.addEventListener("pointerdown", (event: PointerEvent) => handleTouch(runtime, event)); }
const layer = runtime.layout.getLayer("game");
let [x, y] = layer.cssPxToLayer(event.clientX, event.clientY);
let objectInstance = runtime.objects.MyObject.getFirstInstance();
if (objectInstance.containsPoint(x, y)) { console.log("Коснулись объекта!"); // Здесь можно вызвать действия для взаимодействия с объектом
}Итоговый код
Теперь соберем всё воедино. Вот как выглядит полный обработчик касания:

async function OnBeforeProjectStart(runtime: IRuntime) { runtime.addEventListener("pointerdown", (event: PointerEvent) => handleTouch(runtime, event)); } function handleTouch(runtime: IRuntime, event: PointerEvent) { // Получаем слой (например, "game")
const layer = runtime.layout.getLayer("game")!; // Конвертируем координаты касания в координаты на слое
let [x, y] = layer.cssPxToLayer(event.clientX, event.clientY); // Получаем первый инстанс объекта
let objectInstance = runtime.objects.MyObject.getFirstInstance(); // Проверяем, попадает ли касание внутрь объекта
if (objectInstance.containsPoint(x, y)) { console.log("Коснулись объекта!"); // Добавьте здесь нужные действия
} }Заключение
Вот так, даже для такой простой задачи, как обработка касания, мы используем несколько шагов: отслеживание события, конвертирование координат, получение инстанса объекта и проверка попадания в него. Все эти действия — не просто стандартные операции, а важная часть работы с Construct 3 и TypeScript, которые дают больше контроля над игровыми механиками и взаимодействиями.
