Найти в Дзене
Поддержите автораПеревод на любую сумму
Закреплено автором
Игровой движок Godot engine
Список статей в хронологическом порядке.
4090 · 4 года назад
№241. Кнопка с таймером.
В этой статье покажу как собрать простейшую «cooldown» (по руски это будет наверное как «остывание») кнопку. Собственно наша цель показать некий визуальный прогресс, то сколько времени нам ждать до разморозки кнопки и возможности нажать снова. И для этих целей вполне подойдет нода TextureProgressBar. Она уже содержит внутри себя всё что нужно для создания прогресс баров. Добавляем её в проект. И выбираем из списка тип заливки - Counter Clockwise Далее добавляем одну и ту же текстуру в слоты Under и Progress...
10 часов назад
№240. Собираем простенький инвентарь. №3.
Продолжаем. (если пропустили - первая и вторая части) В этой части допишем логику для манипуляций внутри инвентаря. Вынос иконок из инвентаря, а так же сохранение и запись состояния инвентаря. Для начала вынесем создание нового временного спрайта в отдельную функцию. Это чуть сократит общий код, и освободит место для нового. И в основном коде пропишем вызов этой функции там, где мы обычно делали сам спрайт ранее. Теперь добавим развилку. Если кликаем на игровом поле - логика одна. Если в инвентаре то будет чуть иная...
5 дней назад
№239. Собираем простенький инвентарь. №2.
Продолжаем работать над инвентарем. (если пропустили - первая часть ) В этой части соберём сам инвентарь как префаб, и научимся бросать в него иконки. Создаем сцену на основе User Interface ноды. Добавляем под корневую ноду : Panel - просто панель для фона под инвентарем. У меня это зеленый фон. (Вы можете использовать картинку , либо вообще не использовать. В моем случае это чисто для «красоты») Margin Container - делает отступы , чтобы Grid Container был чуть сдвинут в центр. (опять же - это по желанию) Grid Container - контейнер на три столбца...
5 дней назад
№238. Собираем простенький инвентарь. №1.
Приветствую тебя камрад. В этой небольшой серии статей покажу как реализовать простой инвентарь который будет представлять из себя блок с ячейками в которые мы будем перемещать предметы с игрового поля через перетаскивание мышкой. ВАЖНО. Вариантов создания инвентарей, их логики, кода и подходов есть великое множество. В данной статье автор не ставил своей целью создать ультра мега правильный и эталонный код. Данный материал подойдет для начинающих. Для старта, для понимания взаимодействий в коде...
5 дней назад
№237. Про замедление \ ускорение времени. + еще раз про дельту.
На данную тему уже был материал в группе. Но так как в окно редактора наконец-то встроили возможность ускорять или замедлять работу всего приложения, считаю, что напомнить о такой «мелочи» как delta стОит еще раз. Накидаем простой код, который будет гонять по окружности наш спрайт Стартанём приложение , и попробуем поменять скорость. С удивлением обнаружим что скорость вообще не меняется. Но всё изменится если прикрутить в расчеты дельту. Если будем писать код в _physics_process, то дельту можно не учитывать...
1 неделю назад
№236. Drag-n-drop у Control нод.
Многие не знают, но у Control нод есть встроенная реализация «перетаскиваний» (drag n drop). Я собрал вот такую простенькую сцену : Сell это textureRect с текстурой сковородки. И еще несколько textureRect с разными текстурами продуктов. Label - улетающий текст с названием продукта. Подвешиваем на сковородку один скрипт. И второй скрипт вешаем на все продукты. Так как таскать будем продукт, то открываем второй скрипт и прописываем вот такой код : Что тут происходит : Мы по клику создаем textureRect , толкаем в качестве текстуры текстуру которая находится на текущей иконке...
1 неделю назад
№235. Практика. Шейдер «стекания».
В качестве небольшой практики соберем вот такой эффект «стекания», или «сползания» а-ля как в оригинальном Doom. Добиваться 100% совпадения в качестве задачи не было. Делаем имитацию. На самом деле сам шейдер состоит буквально из двух строк. И возможно станет для вас какой-то отправной точкой в разработке. Расплавлять будем ноду Sprite с именем Score. Вся сцена выглядит вот так : Game - картинка которая лежит под экраном который будем мять. AnimationPlayer - я в итоге задействовал для анимации. Навешиваем на спрайт шейдер, и начинаем писать код...
1 месяц назад
№234. Notification. Уведомления.
Каждый объект в Godot имеет некоторый список сигналов , они же Notifications, или если на русском Уведомления. Эти сигналы позволяют нам обрабатывать какие-то манипуляции с объектом, и реагировать на них. Для перехвата есть функция _notification(what). Аргумент what возвращает нам код уведомления, который мы можем обработать через обычный if. Для примера возьмем Node2D, накинем на него скрипт, и напишем код который будет перехватывать наличие мышки в окне приложения...
1 месяц назад
№233. Метод Ease()
Если представим что каждую секунду мы прибавляем единицу к какому то значению, то получим линейный график изменения этого значения. И вот если нас не устраивают такие линейности , то метод ease позволяет нам добавлять «изинги» . Если по простому - сглаживание кривой значений. Метод принимает в себя два аргумента : А - значение от нуля до единицы , и Б - значение кривой (curve). Причем это не ресурс Curve , а float значение. Значение Б может быть как отрицательным так и положительным. При этом Б равное 1 и -1 это линейное изменение как на картинке выше...
1 месяц назад
№232. Переходы между уровнями (сценами).
У нас есть некие уровни, и нам необходимо сделать переходы между ними. В моем случае это закрывание и открывание дверей. Для этого создаем «сцену переход». Я обозвал её transition. Внутри два спрайта, и аниматор с двумя анимациями. Одна на открывание, вторая на закрывание. Далее , важный шаг - делаем эту сцену глобальной. Для того чтобы она всегда была загружена в памяти и мы могли запускать анимации в любой момент. (если кто подзабыл - Project > Project Settings ) Называем эту сцену Global_trans Добавляем скрипт на корневую ноду...
2 месяца назад
№231. Как вырезать дырку в Navigation полигоне.
Совсем коротенькая статья. Не все знают, но для того чтобы вырезать внутри навигационного полигона дырку ( допустим это будет место куда персонажу заходить не нужно), достаточно просто рисовать полигон в противоположном направлении от основного. Например, вы нарисовали основной по часовой стрелке...
3 месяца назад
Ветка Godot 3.х обновилась до 3.6.2. Обновлен Android APIs, и исправлены мелкие баги.
3 месяца назад