Мобильный геймпад на Godot. Часть 1.5: Кнопки - Бонус
Один хороший человек указал на довольно грубую ошибку с моей стороны. Я умудрился обложиться костылями пока делал кнопки. А все из-за банальной невнимательности.
Все это время у TouchScreenButton был чертов Shape2D! А значит области можно было назначить в одном узле и не городить кучу зависимостей. В общем настало время убрать за собой мусор.
Расположение элементов
Но начнем мы издалека. Представим, что мы очень ленивые люди ( мне и представлять не надо, родился с преимуществом, хех ). Нам нужно переместить кнопки нашего мобильного контроллера. И вот незадача - опять высчитывать пиксели, чтобы кнопки стояли ровно, по уровню. Можно ли как-то решить эту проблему? И да и нет. Дело в том, что узел Node2D и его дочки не дает таких возможностей. Данная привилегия осталась у узла Control. В обычной ситуации создается дочерний узел из состава Container (входит в Control). Одни позволяют выстраивать элементы по диагонали, другие по вертикали и так далее. Такие дочерние узлы - контейнеры - не видят элементы из состава Node2D. И вот тут в дело вступает магия костылей! Мое любимое.
Если закинуть кнопку, в нашем случае TouchScreenButton, в узел Control, то вы сможете привязать вашу кнопку к контейнеру. В моем случае я выбрал MarginContainer (Left_Buttons и Right_buttons в левой колонке зависимостей) для расстановки кнопок. Много играться не стал, успокоился и на этом. Что-то мне и такого хватило "_"
Теперь вы можете перемещать все кнопки сразу, двигая один лишь контейнер.
Область обработки
Как уже сказал, у узла/кнопки TouchScreenButton есть встроенный Shape2D (@_@), благодаря которому можно и без Area2D сузить область обработки нажатия.
И да, в TouchScreenButton заодно встроены сразу поля для текстур состояний нажатия и ожидания. Без кода. Зато мы познакомились с Area2D :DDD
Я люблю Paint3D
Такой мини-бонус. К бонусу. Если помните, в прошлой части кнопки из левой половины контроллера были совсе-е-ем другие. Они мне не очень нравились и я сделал свои. Так как я довольно криворукий, пришлось подключать смекалку. Итак. Есть кнопка A - будет треугольником теперь, немного кисточки и заливки из Paint и вуаля.
Во вкладке холст есть удобные кнопки разворота. Не забудьте включить "прозрачный холст". Он конечно не понадобится для картинки, которая изначально была без фона, но мало ли что Windows удумает. Потом я сохранил каждый поворот отдельно и поменял цвета местами через заливку. 1 минута и 8 картинок для кнопок движений готовы.
Хочу также обратить ваше внимание на очень удобную функцию "Волшебное выделение", которое позволяет автоматически определять выделяющиеся объекты и вырезать их из фона. Может быть полезно в некоторых ситуациях.






