В этой статье будем собирать вот такое круговое меню.
Будем делать всё через код, дабы прокачать скилы кодера :)
Т.З : Необходимо создать меню, в котором все кнопки располагаются по окружности, с возможностью менять количество кнопок.
Кнопки должны выводить некую информацию в центре меню. Спустя некоторое время информация удаляется.
При наведении курсора к кнопкам они плавно меняют свой размер.
Так как в будущем нам нужно будет обращаться в _Process() ко всем кнопкам, я сразу создал ноду под которую буду сваливать все кнопки и перебирать через get_child().
Вы можете в данном случае сделать как то иначе, через группу, или идентификатор.
Сразу же добавим в проект Label, который будет выводить инфу после нажатия на кнопки.
Переходим в редактор кода. Начинаем накидывать.
Для начала обозначим переменную количества кнопок.
И в _ready() через цикл создадим 9 кнопок в ряд.
(коментарии к коду на картинке)
Стартуем
Всё рисуется, пришло время добавить логику для построения кнопок по окружности.
Надеюсь вы помните, что такое синус ))
Делим полный круг на количество кнопок и выносим это в переменную pip.
Далее подмешиваем это в значения позиций.
Результат:
Сразу поправим расположение кнопок.
Отлично. Проверим разное количество кнопок на отрисовке:
Пришло время подключить логику которая будет менять размеры кнопок при приближении к ним курсора.
В _process() перебираем все наши кнопки и если дистанция между курсором и кнопкой меньше 100 пикселей - подмешиваем к scale дистанцию до курсора.
Проверяем :
Осталось подключить сигналы к кнопкам и выводить инфу в лейбл.
Для начала подключим просто сигнал pressed, и выведем в консоль некий текст.
По нажатию на любую кнопку в консоли будет выводиться текст Worked!.
Теперь подключим в сигнал передачу агрумента. В качестве последнего будет выступать номер кнопки.
Ну и в функции clickButt будем выводить это всё в леибл.
И на последок добавляем очищения лейбла. Для этого добавим программный таймер через await.
Ну и на этом всё. Проверяем, радуемся результату !
За сим всё, удачной разработки !
Подписывайтесь на канал, вступайте в группу в ВК, и не забывайте что у нас есть дискорд сервер.
Удачи в изучении годо !