Найти в Дзене

№236. Drag-n-drop у Control нод.

Многие не знают, но у Control нод есть встроенная реализация «перетаскиваний» (drag n drop). Я собрал вот такую простенькую сцену :
Сell это textureRect с текстурой сковородки. И еще несколько textureRect с разными текстурами продуктов.
Label - улетающий текст с названием продукта. Подвешиваем на сковородку один скрипт.
И второй скрипт вешаем на все продукты. Так как таскать будем продукт, то открываем второй скрипт и прописываем вот такой код : Что тут происходит :
Мы по клику создаем textureRect , толкаем в качестве текстуры текстуру которая находится на текущей иконке. Увеличиваем (это потому что у меня изначально увеличенные иконки в сцене) , меняем фильтрацию, и смещаем pivot чтобы иконка была в центре курсора.
Стартуем метод set_drag_preview который нарисует нашу иконку и прикрепит на время таскания её к курсору.
Ну и возвращать будем имя файла текстуры. (Тут в принципе можно возвращать что вам угодно. Но мне нужен был текст) Теперь открываем скрипт сковородки, и наваливаем туда

Многие не знают, но у Control нод есть встроенная реализация «перетаскиваний» (drag n drop).

Я собрал вот такую простенькую сцену :
Сell это textureRect с текстурой сковородки. И еще несколько textureRect с разными текстурами продуктов.
Label - улетающий текст с названием продукта.

-2

Подвешиваем на сковородку один скрипт.
И второй скрипт вешаем на все продукты.

Так как таскать будем продукт, то открываем второй скрипт и прописываем вот такой код :

-3

Что тут происходит :
Мы по клику создаем
textureRect , толкаем в качестве текстуры текстуру которая находится на текущей иконке. Увеличиваем (это потому что у меня изначально увеличенные иконки в сцене) , меняем фильтрацию, и смещаем pivot чтобы иконка была в центре курсора.
Стартуем метод
set_drag_preview который нарисует нашу иконку и прикрепит на время таскания её к курсору.
Ну и возвращать будем имя файла текстуры. (Тут в принципе можно возвращать что вам угодно. Но мне нужен был текст)

Теперь открываем скрипт сковородки, и наваливаем туда следующий код :

-4

Тут у нас две непосредственно связанных с драгом функции .
В первой мы проверяем какая дата валится и верная ли она.
Во второй мы принимаем эту дату. В моем случае я сразу её отправил в функцию string_fly которая передает этот стринг в лейбл и двигает его вверх.

Aргумент at_position поможет вам, если вы захотите после отпускания мышки что то нарисовать в месте «сброса» =)

Собственно на этом наверно и всё.
Подписывайтесь на канал, при желании
вступайте в группу в ВК.
Удачи в изучении годо.