Найти в Дзене

№37. Клик по спрайту. Area2D.

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

Для того чтобы отследить клик нам надо использовать ноду Area2D совместно с нодой CollisionShape2D либо CollisionPolygon2D.

Нода Area2D служит для отслеживания пересечений между объектами, а так же отслеживания клика в связке с нодами collision. Последние используются для определения зоны действия коллизий.

Давайте заглянем в сигналы Area2D.

-2

В разделе CollisionObject2D мы видим input_event. Это то, что нам нужно.
(отдельно про инпут есть статья
вот ТУТ)

Создаем вот такую иерархию

-3

Корневой нодой выступает Area2D, под ней идет спрайт и CollisionShape2D. В последней вы можете выбрать любую форму для коллизии. Я выбрал прямоугольник.

-4

Теперь надо создать скрипт на Area2D, и подключить к нему сигнал input_event.
Для тех кто не знает как это сделать — просто кликайте дважды на сигнале и выбирайте скрипт куда пропишется функция.

-5

Ну а далее в скрипте мы увидим нашу функцию. Давайте сделаем так чтобы по клику на спрайт в выводе появлялась фраза «CLICK»

-6
-7

Как видим , всё работает как надо.

В качестве формы для определения зоны коллизий мы можем воспользоваться двумя нодами :

CollisionShape2D позволяет выбрать нам одну из простых форм. Круг, овал, прямоугольник.

CollisionPolygon2D позволяет создать полигон любой подходящей для нас формы.

Надеюсь вам был полезен этот материал. Подписывайтесь на канал чтобы не пропустить новые статьи.

-8