godot engine управление персонажем

Основы создания 2D персонажа в Godot. Часть 2: компилирование шаблонов, немного о GDScript, движение и анимация героя

В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр.
godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.
Во второй части на повестке дня у нас:
1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры.
2) Новые анимации. Параметры персонажа.
3) Управление.
3) GDScript. Добро пожаловать в настоящий кодинг!
4) Импорт простейших Tilesets.
5) Бонус: разбор устройства простейших задников.

Ну и как обычно, много картинок!

Компиляция.

В прошлой статье я упоминал что авторы не предусматривали бинарники для linux x86. На время написания статьи бинарные файлы всё ещё были не готовы. Но экспортировать готовые проекты, demo или просто тесты уже хотелось. Но что делать, если нет Шаблонов экспорта? Правильно! Скомпилировать их самому!

Переходим в директорию с исходными файлами и компилируем

После успешной компиляции переименовываем свежеполученный файл в linux_x11_32_debug

Сам шаблон экспорта:

Переименовываем в linux_x11_32_release

Запаковываем в zip-архив.

Скармливаем архив Godot. Вуаля, теперь можно экспортировать проект для ОС GNU/Linux любой разрядности.

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Да даже под ОС и разрядности, отличные от Вашей. Бинарные файлы для Windows без проблем смог завести в wine, главное не забыть снять или поставить галочку 64bits, и выключить debugging, если не нужен.

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Подробнее про настройки экспорта можно почитать на сайте проекта на английском языке. Если будет актуально и востребовано, можно будет подумать о русской локализации статей и создания русскоязычной wiki по Godot.

Анимация бега и прыжков

В прошлом уроке я заранее подготовил текстурку со спрайтами бега и прыжка нашего Капитана. Поэтому я думаю создать две анимации jumping и run не составит труда. Я думаю это не трудно будет сделать. Скажу лишь параметры:

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Да, прыжок — это только прыжок. Значит нужна ещё анимация падения.

Параметры персонажа

1) Напоминаю. Проверьте, стоит ли галочка на параметре Camera2D/Current, отвечающая за привязку объекта «камера» к объекту player.

3) С геометрией веселее. Для начала надо добавить Node CollisionPolygon2D. Теперь нам надо нарисовать этот самый полигон, дающий персонажу «массу».То-есть надо нарисовать то, чем герой будет «биться об стенки» при столкновении с ними. Иначе он будет просто проходить «сквозь стены».
godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.
Выбираем карандаш. Теперь левой клавишей мыши «ставим» 3 вершины треугольника. Два на каждом из плечей, и один в районе живота. И правой клавишей (просто щёлкнуть на рабочей области) рисуем треугольник. Желательно чтобы он в итоге получился равнобедренный или равносторонний. С нижней вершиной на оси Y. Теперь увеличим его. Немного. Иначе персонаж будет проходить сквозь потолок например.
godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Готово, наш персонаж — болванчик готов. Теперь самое лёгкое — управление.

Создание клавиш управления
GDScript

Тут я немного в ступоре. Дело в том что из меня программист честно сказать не очень. Я сам многое не понимаю. И читаю книжки по Python чтобы лучше разбираться в вопросе. Потому что GDScript очень похож на него.

Внимание!

Небольшая просьба — если знаете как оформить лучше — напишите пожалуйста. Буду рад учесть все замечания.

Напомню предыдущий код отображения простейшей анимации:

Источник

Основы создания 2D персонажа в Godot. Часть 1: компилирование игрового движка, создание проекта и анимация покоя героя

Пару дней назад увидел статью о публикации исходного кода под свободной лицензией MIT игрового движка Godot и сразу решил поковыряться в нём.
Оказалось не всё так сложно, скорее забавно. В своей первой публикации хотелось бы рассказать о первых шагах на пути к созданию игрового платформера, и всех подводных камнях, о которые я чуть было не переломал пальцы за эти дни.

godot engine управление персонажем. 9bb07ee4e46eac71adbb2a0e94871978. godot engine управление персонажем фото. godot engine управление персонажем-9bb07ee4e46eac71adbb2a0e94871978. картинка godot engine управление персонажем. картинка 9bb07ee4e46eac71adbb2a0e94871978. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Если это кому-то интересно, добро пожаловать под Хабракат!

Встречаем: компилирование и установка godot на GNU/Linux x86, создание простейшей сцены и анимированного персонажа

Сразу определимся, чтобы не было недопонимания:
1) На написание статьи меня сподвиг godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.Charoplet со своим циклом статей «2D персонаж в Unity 3D». Спасибо ему за это, творческих успехов и новых публикаций.
2) Опять же, для наглядности взял (без спроса) текстуры (персонажа) из его уроков. Надеюсь, меня за это простят.
3) На борту имею только GNU/Linux, x86 и amd64 соответственно. Под другие ОС достаточно скачать бинарные файлы с сайта создателей. Так как под amd64 всё уже есть, а под x86 предвидится в ближайшем будущем (автор обещал скомпилировать бинарные файлы как только сможет), я и решил что для 32-битных систем статья будет более актуальна и интересна.

Компиляция

Устанавливаем зависимости, если ещё нет в системе (Если что-то не получается, информация устарела, посмотрите на сайте разработчиков):

GCC or LLVM
Python 2.7+ (3.0 ещё не тестировался).
SCons build system.
X11 and MESA development Libraries
ALSA development libraries
Freetype
pkg-config
Пользователям Ubuntu:

Клонирование исходных кодов:

Можно сходить и приготовить чашечку чая. Компилирование — процесс не быстрый.

Чай приготовили, компиляция ещё идёт? Тогда можно сходить на сайт издателя и почитать документацию, скачать Демо и примеры, а так-же Шаблоны экспорта проектов под нужные операционные системы.

Первый запуск, создание проекта

В директории /bin появился бинарный файл godot. Достаточно просто запустить его.
Перед нами сразу же появляется диалоговое с проектами. Так как мы запустили в первый раз, оно будет пустым.
godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.
Давайте создадим свой первый проект.

Сначала я думал что у меня руки кривые. Пересобрал из git, запускаю — опять двадцать пять. Собрал на другой машине — всё заработало! На своей — нет. И тут до меня допёрло! Товарищи! Программа не понимает кириллицу! В общем переместил я всё в другой каталог, и всё заработало и на моей машине. Что ж, впредь будем осторожнее.

Ну вот и главное окно программы.

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Для начала давайте создадим новую сцену. Сцена — это эпизод игры. Это может быть целый уровень. Заставка. Анимация персонажа. Задний план. Godot — программа редактирования сцен. Мы сегодня не будем углубляться в создание полнофункциональной игровой сцены, а просто создадим персонажа.

Создание игрового персонажа

Первое что надо сделать — это добыть спрайты. Нарисовать/скачать/украсть. Я пожалуй возьму из урока про Unity3D. Спрайты от godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.Charoplet.

Качаем Idle.png.
Импортируем в Godot:

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Указать какое изображение(я) куда импортируем

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Указать степень сжатия

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

И нажать «Import». В Wiki есть более подробная информация об импорте текстур на английском. Рекомендую к прочтению.

Ну а мы довольные результатом пробуем создать персонажа.

Сцена персонажа

В верхнем правом углу в окошке Scene нажимаем на единственную активную кнопку «Add/Create a new Node», или сочетанием клавиш Ctrl+A создаём «Ноду». Я думаю самый близкий перевод — шестерня, но звучит не красиво. Пусть будет материал? Документ? Или так и оставить, — «Нода»? Буду рад комментариям.

В поиске «Search» вводим «Rigid», и «Node» отсортируются по названиям. Выбираем RigidBody2D.
Настраиваем параметры в меню Inspector ниже:
Mode: Character
Mass: 3
Friction: 0
Custom Integrato:

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Да, она появилась! Теперь нам надо указать, что у нас тут аж целых 8 фреймов (Правда сами фреймы считаются с нуля, их количество считаем с единицы, привыкайте). Параметр Hframes, — Горизонтальные фреймы, ставим равным 8. И что мы видим?

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

На первом же (который нулевой) фрейме виден хвост капитана из следующего! Это возмутительно! Да что эти OKAM Studio о себе возомнили?! Даже количество кадров в раскадровке нормально посчитать не могут! Как они могут такие программы писать?!

Да? Промелькнула мысль? Нет, разработчики не виноваты. Виноваты мы. Поленились нарисовать свои спрайты. Взяли чужие — вот и расплата.
Персонаж на спрайте расположен криво. Будем править.

В GIMP’е оказывается делать/изменять/править спрайты не так уж и трудно. Выставляем сетку нужного размера (120 на 120 пикселей). И распихиваем кадры по местам. Готово. Скачать исходные файлы можно тут. Готовая текстура выглядит так:

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Да, я склеил все анимации в одну картинку. Чтобы было проще работать дальше. Когда мы будем делать прыжки и бег/ходьбу.

Ок, перезаливаем. Указываем Vframes = 4; Hframes = 8

Наводим на RigidBody2D и переименовываем его в player. Так будет понятнее, не правда ли?

Ctrl+A — создаем «Node» «AnimationPlayer» и сразу же «Camera2D» чтобы не возвращаться. Переименовываем AnimationPlayer в anim, а Camera2D просто в camera. Так дальше будет проще. С камерой я думаю сразу догадались что делать. Больше пока её трогать не будем.

Самое время создавать анимацию! Делать это проще некуда! Выбираем anim, внизу слева появляется меню анимации.
Создадим анимацию. Слева внизу есть кнопка «Create new animation in player». Жмякаем. Называем idle.
Нажимаем на карандаш правее, и вот оно, меню редактора анимации.

Ставим Len(s) — длину анимации 1,1 (секунды), а Step(s) — шаг анимации, 0,15.
Выбираем опять на Sprite в окне Scene вверху справа.

Смотрим на Inspector — ищем переменную Frame. Она должна равняться нулю. Справа нарисован ключик. Нажимаем на него. Нам предлагают создать новую линию анимации «frame» для данного спрайта. Соглашаемся (Create).
Теперь всё просто. Нажимаем Ctrl + Right, выбираем следующую анимацию — нажимаем на ключик. И так далее. Всего должно получиться 8 синих точек, 8 кадров анимации. После этого можно нажать на плеере на play, и посмотреть что у нас получилось. Да, не забудьте зациклить анимацию. (Кнопка Enable/Disable looping in animation).

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Так, 30% сделали. Теперь самое интересное.

Будем варить! кодить!

Переключаемся на вкладку скрипты.

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

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

Ну вот, а вы боялись.

var new_anim=anim
new_anim=«idle»

if (new_anim!=anim):
anim=new_anim
get_node(«anim»).play(anim)

Не забываем сохранить как player.gd.

Так. В принципе почти всё готово. Осталось самое главное:

Создание сцены

Не забываем сохранить сцену с персонажем. И создаём новую. Благо уже умеем.

Для начала создаём пустую «Node» — назовём её Scene.
Теперь к ней привяжем нашего игрока. Нажимаем на «плюс» и выбираем нашего только что созданного player.xml.

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Сохраняем нашу сцену как scene.xml. И запускаем ещё раз. Если всё сделали правильно, то увидите потрясающую анимацию нашего Капитана!

Небольшое видео результата с бонусными задниками и землей под ногами:

Ну и в заключение. Как я писал выше, в ОС GNU/linux x86 на данный момент проект экспортировать нельзя. Авторы программы уведомлены. В скором будущем обещали решить эту проблему и скомпилировать не только бинарники для x86, но и Шаблоны экспорта. Также можете протестировать экспорт на другие ОС.

Ну а я, если получится, надеюсь продолжить цикл статей о создании 2D, а в будущем возможно и 3D игр на этом замечательном движке. Приятной пятницы, с Днём Компьютерщика, до скорых встреч!

Источник

Управление свайпами в игровом проекте на Godot Engine

Всем Приветствие! Сегодня я бы хотел рассказать о том, как реализовать управление свайпами в игровом проекте для Android на движке Godot Engine.

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Меня зовут Пётр, и я являюсь одним из активных пользователей игрового движка Godot Engine.
В русскоязычном сегменте огромнейший дефицит материалов по данному инструменту, что меня сильно удивляет, так как он является одним из самых быстро-развивающихся игровых движков.
Конечно, он во многом уступает таким движкам, как Unity, UE, и подобным, да и игру класса «AAA» на нём не сделаешь.

Однако! Он бесплатный (полностью), кросс-платформенный (полностью), а его вес составляет порядка 60 мегабайт, в противовес тому же Unity.

Движок запускается на большинстве устройств, даже если последние из совсем уж бюджетного ряда. Так же «из коробки» он уже русифицирован, имеет на борту все необходимые инструменты, не требует наличия дополнительного ПО, и не съедает в запущенном виде всю оперативную память.

На Хабре я уже видел пару статей по нему, и это очень мало, так как он настолько дружелюбен к разработчику, что пройти мимо него и не попробовать — большое упущение.

Тема данного поста — реализация управления свайпами (жестами) в Android-проекте.
Вообще, опыт моего использования движка довольно обширен, и, если тема получит отклик, я могу оформить целый обучающий курс. Данным же постом я хочу хотя бы немного привлечь ваше внимание к движку.

В качестве языка программирования можно использовать, опять же, из коробки, два варианта: GDScript и C#. Я буду использовать первый.

Интерфейс основного редактора выглядит так:

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

В нем можно работать одновременно с 3D, 2D, скриптами и вообще всем, что может потребоваться разработчику.

В движке используется подход, при котором ваша игра представляет из себя набор сцен, вложенных друг в друга. И тут может возникнуть некоторая путаница, потому термин «сцена» я использую для узлов, которые представляют из себя именно игровые сцены (ситуации, окна, состояния игры (меню, игра, т.д.)), а для остальных случаев я использую термин «префаб», позаимствованный у Unity.

Поскольку в данном посте я буду рассматривать частный случай, то и разворачивать некоторые темы я не буду. Если что-то неясно — есть комментарии.

Так вот, основной сценой для демонстрации у нас будет game.

Структура её выглядит так:

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Корневой узел game хранит в себе вложенные:
— world, — хранит в себе данные уровня
— — level, — набор объектов окружения (блоки, кольца, препятствия)
— — player, — объект игрока
— — InterpolatedCamera, — плавная камера, следящая за игроком
— gui, — интерфейс, задействован не будет

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

Так, нажав на значок «скрипт», мы попадаем в редактор сценариев, по сути просто переключается режим работы движка.

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

В данном режиме работы можно редактировать поведение объектов. Собственно, в данном случае это скрипт объекта world, который при загрузке объекта в игру устанавливает в объект камеры (InterpolatedCamera) устанавливает цель для слежения.

Синтаксически GDScript похож на Python. Пройти краткое обучение GDScript на русском языке можно тут: GDScript Book

С объектом world понятно, он просто устанавливает камере цель для слежения. Следующий объект (уже дочерний для world), — это level. Его структура выглядит так:

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

По сути, это просто расставленные объекты с физическими свойствами, не имеющие скриптов и поведения. Кроме объектов «cell». Это вращающиеся колечки, исчезающие при соприкосновении с объектом игрока.

Больше всего сейчас интересен объект player, в котором содержится логика управления свайпами для сенсорных экранов.

Выглядит данный префаб так:

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Корневой объект имеет скрипт, к которому мы перейдем немного позже.
Сначала рассмотрим вложенные объекты.

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Ну и его описание и расшифровка.

Каждую строчку описал, надеюсь, со скриптами всё плюс минус ясно.

Если русским языком, то мы при движении пальцем по экрану регистрируем направление движения и скорость. Если палец движется с нужной скоростью, засчитываем свайп. Исходя из того, по какой оси и в какую сторону шло движение, имеем три вариант: ВВЕРХ, ВЛЕВО, ВПРАВО.
Записываем полученное значение в переменную, которую тут же подхватывает событие обновления состояния объекта, и выполняет с ним нужные действия, после чего помечает событие, как отработанное и ожидает следующее.

Я взял не самый простой способ реализации свайпа, однако довольно надежный и работающий в большинстве ситуаций. Само собой, зависит от жанра и типа игры.

В результате проделанной работы мы получаем пример того, как легко реализовать управление свайпами буквально за десять минут.

Суммарно на всё у меня ушло минут 30, это с учетом создания моделек в Blender.

Источник

Механики для реализации платформера на Godot engine. 2 часть

Надеюсь тем, кто читал предыдущую статью стало примерно понятно, как всё работает. Теперь вернёмся к разработке.

Машина состояний

Машина состояний(в моём понимании) — часть программы, что определяет состояние чего либо: в воздухе, на полу, на потолке, или на стене, а также определяет что должно происходить с персонажем в том или ином месте. В GodotEngine есть такая вещь как enum, что создаёт перечисление, где каждый элемент является, заданной в коде, константой. Думаю лучше покажу это на примере:

Данный код можно смело положить в самое начало скрипта игрового персонажа и держать в голове, что он существует. Следом инициализируем переменную в нужном месте var current_state: int = States.IN_AIR, которая равна нулю, если использовать print. Далее нужно как-то определять что игрок в текущем состоянии будет делать. Думаю многим опытным разработчикам пришедшим из C++ знакома конструкция switch () . В GDScript есть похожая адаптированная конструкция, хотя и switch также есть в планах у разработчиков. Конструкция называется match.

Думаю будет правильнее показать данную конструкцию в деле, так как рассказывать будет сложнее, чем показывать:

Но мы до сих пор не меняем состояния. Нужно создать отдельную функцию, которую будем вызывать перед match-ем, чтобы изменять переменную current_state которую стоит добавить в код к остальным переменным. А функцию назовём update_state().

Теперь, когда машина состояний готова, мы можем добавлять уйму функций. В том числе и добавить анимации к персонажу… Даже не так… Мы можем добавить тонну анимаций персонажу. Система стала модульной. Но на этом мы не закончили с кодом. Я сказал в начале, что покажу, как делать дополнительный прыжок в воздухе, карабканье по, и прыжок от стены. Начнём по порядку.

Дополнительный прыжок в воздухе

Во-первых, добавьте вызов прыжка в состоянии States.IN_AIR в наш match, который мы чуток доработаем.

Вот код нашего прыжка, который я исправил:

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

Карабканье по стенам

К нашему сожалению, Нормаль стены GodotEngine не позволяет узнать, из чего следует, что нам придётся создать небольшой костыль. Для начала я сделаю сноску имеющихся на данный момент переменных, чтобы можно было проще сказать что изменилось.

Теперь нужно определять по какой стене игрок карабкается.

Вот дерево сцены, что вам стоит подготовить для реализации определителя стороны стены

godot engine управление персонажем. image loader. godot engine управление персонажем фото. godot engine управление персонажем-image loader. картинка godot engine управление персонажем. картинка image loader. В предыдущей статье мы рассмотрели азы создания нового проекта в Godot. И с этими поверхностными знаниями можно разве что поглядеть demo-версии игр. Во второй части на повестке дня у нас: 1) Экспорт готового проекта в бинарные файлы для выбранной архитектуры. 2) Новые анимации. Параметры персонажа. 3) Управление. 3) GDScript. Добро пожаловать в настоящий кодинг! 4) Импорт простейших Tilesets. 5) Бонус: разбор устройства простейших задников.

Разместите 2 Area2D по бокам персонажа и CollisionShape2D обоих не должны пересекаться с персонажем. Подпишите соответственно объекты WallLeft/WallRight и присоедините сигналы _on_body_endered и _on_body_exited к единственному скрипту персонажа. Вот код который нужен чтобы определять стены(Добавить в самый конец скрипта):

Приступим к методу карабканья. В коде всё будет сказано за меня

И нужно переписать управление move_character() для того, чтобы можно было не просто держаться, а карабкаться вверх вниз, благо у нас есть direction:

И исправляем наш _physics_process():

Теперь персонаж должен уметь карабкаться по стенам.

Источник

Механики для реализации платформера на игровом движке GodotEngine

Базовый код

Для того чтобы персонаж подчинялся физике нужно вызвать move_and_slide() в методе _process() или _physics_process().

Во всём последующем коде я буду использовать статическую типизацию.

Данного кода будет достаточно чтобы заставить любой объект KinematicBody2D двигаться в зависимости от столкновений c другими объектами, но управлять этим объектом невозможно, тем более в платформерах этот объект по-прежнему не может падать вниз. Для того чтобы объект начал падать, нужно увеличивать значение self.velocity.y на положительное значение. Дело в том, что Godot Engine считает обе координаты из левого верхнего угла в правый нижний в режиме 2D. Для того чтобы объект падал нужно к ускорению прибавлять что-то. Обычно я использую константу GRAVITY, которая задаётся в начале программы. Далее будет представлен код с изменениями для того, чтобы объект падал.

Управление перемещением стоит реализовывать в отдельном методе, чтобы не слишком усложнять 1 метод. Тем более никто не выдержит повторение одного и того же кода в одной статье 33 раза.

Перемещение

Недавно я почерпнул один интересный способ управления персонажем, который стал альтернативой первому освоенному мной способу. Далее я покажу оба способа:

Прыжок

Прыжок реализовывается почти также легко и однозначно, как первый способ перемещения. Для этого нужно создать константу силы прыжка, как скорость перемещения в начале и поставить значение большее чем значение гравитации. Сразу перейдём к программному коду:

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *