Найти в Дзене
ndrew

Основы GDScript #1

Godot Engine - это медленно (но верно) набирающий популярность игровой движок, обращение с которым создает меньше (или не больше) забот, чем обращение с небезызвестными аналогами, вроде Unity и UE4. Но кодинг все равно имеет значение. Если вы ранее имели опыт программирования на Python - вам будет значительно проще, если же вы далеки "от всего этого" - будет сложнее. В любом случае я хочу поделиться своим опытом и ввести вас в основы создания скриптов для Godot. Синтаксис! Тут все не сложно, максимальная схожесть с Python, но обо всем по порядку. Прежде чем пилить адские механики для вашего персонажа, стоит освоить базовые вещи, вроде обращения с переменными и основными методами. После того как вы создали скрипт - не пугайтесь, головная боль с кодингом начнется позже, а пока, взглянем на первую строчку - extends Node. Она означает наследство от конкретного вида узла. Узлы, напомню, это основа всего движка Godot. Можем смело стереть все до этой строчки. Переменные. Они понадобятся вам

Godot Engine - это медленно (но верно) набирающий популярность игровой движок, обращение с которым создает меньше (или не больше) забот, чем обращение с небезызвестными аналогами, вроде Unity и UE4. Но кодинг все равно имеет значение. Если вы ранее имели опыт программирования на Python - вам будет значительно проще, если же вы далеки "от всего этого" - будет сложнее. В любом случае я хочу поделиться своим опытом и ввести вас в основы создания скриптов для Godot.

Синтаксис! Тут все не сложно, максимальная схожесть с Python, но обо всем по порядку.

Прежде чем пилить адские механики для вашего персонажа, стоит освоить базовые вещи, вроде обращения с переменными и основными методами.

В новом проекте создаем скрипт
В новом проекте создаем скрипт
Окно редактора скриптов
Окно редактора скриптов

После того как вы создали скрипт - не пугайтесь, головная боль с кодингом начнется позже, а пока, взглянем на первую строчку - extends Node. Она означает наследство от конкретного вида узла. Узлы, напомню, это основа всего движка Godot. Можем смело стереть все до этой строчки.

Переменные. Они понадобятся вам везде, как их использовать? Существуют разные способы инициализации (создания) переменной:

var [название] = [значение] - основной способ
const [название] = [значение] - создание константы (нельзя изменить значение такой переменной)
onready var [название] [значение] - инициализация при старте проекта (когда нам нужно получить параметр объекта, которого не существует до момента запуска и т.д.и т.п.)

Для запуска проекта необходим корневой узел (создаем пустую сцену для отладки скрипта). Далее прикрепляем наш скрипт к этой сцене (узлу)

К любому узлу (Node) можно прикрепить скрипт
К любому узлу (Node) можно прикрепить скрипт
Выбираем существующий скрипт (!)
Выбираем существующий скрипт (!)

Теперь наш скрипт загружается вместе со сценой, можем идти дальше.

У каждой переменной есть свой тип:

int - целочисленное значение
str - строка ( текстовое значение )
bool - значение истина/ложь
и т.д.
Инициализация переменных
Инициализация переменных

На приведенном выше скриншоте a - тип int, b - str, c - bool. Типов, разумеется, больше, чем 3, но суть ясна. Если численное значение a понадобится нам для вывода вместе с текстом, мы можем написать a = str(a), и тогда a примет текстовое значение "10"

Методы(функции). Вот мы создали переменные, что дальше? Метод, позволяющий нам совершить какое-либо действие при запуске - метод _ready().

Вывод значения в консоли
Вывод значения в консоли

Синтаксис вызова метода вы видите на скриншоте, теперь мы можем вывести значение a в консоль с помощью функции print(). Теперь, когда мы запустим сцену, увидим в консоли движка число 10.

Консоль Godot Engine
Консоль Godot Engine

Но что, если нам нужно изменять значение в процессе? Например мы будем двигать персонажа в реальном времени, а значит менять вектор его движения. Тогда нам понадобится метод _physics_process(delta). Но если физика нам не важна (например мы отображаем время в игре в виде текста на экране), то подойдет обычный _process(delta).

И немного математических операторов для обращения с переменными:

* - умножение (x * y)
/ - деление (x / y)
+ - сложение (x + y)
- - вычитание (x - y)
% - остаток от деления (x % y)

В следующем уроке я расскажу про логические конструкции и перемещение объекта в двумерном пространстве.

Не понравилась статья? Поделись своими эмоциями в комментариях и будущие статьи будут чуть лучше!