В двух словах - скрипт это некий набор команд, которые исполняются при запуске. В годо существует свой язык GDScript. По синтаксису он очень похож на питон(python). Так что если вы когда либо писали код на этом языке, то вы не будете испытывать проблем при написании кода.
Итак, у нас есть сцена, в ней есть некий спрайт.
Давайте попробуем написать небольшой скрипт, который заставит двигаться наш спрайт слева направо.
Но прежде чем мы это сделаем, нам надо понять как в принципе обрабатывается информация в годо.
Тут есть несколько основных функций внутри которых мы формируем код:
_ready
_process
_physics_process
_input
_process и _physics_process — это по сути глобальные циклы. Все что находится в них , исполняется постоянно.
_ready — исполняется в самом начале запуска приложения, единожды.
_input — это функция в которой отлавливается нажатие кнопок клавиатуры, мышки и прочего.
Давайте нажмем правой кнопкой мышки, в списке объектов сцены на нашем спрайте, и в выпавшем меню нажмем Attach Script
Жмем Create , и перед нами появляется скрипт с частично введенной информацией.
Давайте рассмотрим поближе, что тут написано.
Ну во первых , всё что тут написано серым и начинается с символа «решетка», это комментарий. Он не исполняется, и вы сами можете таким образом отключать части скрипта. Либо писать какие то важные пометки для себя.
Начнем с самого верха. Первая строка гласит — extends Sprite.
Это значит, что мы расширяем класс Спрайт. Т.е будем оперировать данными этого класса, и как бы развивать его дальше. Если вы в данный момент вообще ничего не поняли — это нормально. Просто оставьте это как есть, и двигаемся дальше.
Далее серым текстом нам пишут что в этом месте мы можем указать какие либо переменные.
Затем идет вызов ready функции
func _ready():
pass
PASS в данном случае просто пропускает исполнение функции. Т.е если мы запустим скрипт у нас не будет ниодной ошибки. Но если мы уберем PASS, то годо нам намекнет что в функции есть ошибка.
Далее идёт серый текст о том что функция func _process (delta): будет исполняться постоянно, а при помощи delta мы можем получить время прошедшее между кадрами.
Но оно всё отключено, и по сути нам не нужно.
Давайте удалим всё до строки extends Sprite. И будем писать код сами с нуля. Наша задача — заставить двигаться спрайт слева направо.Давайте посмотрим в инспекторе на свойства позиции.
Есть свойство position. И две оси x и y .
Так как наш объект должен постоянно двигаться , то писать код будем в функции _process. Помним что она обрабатывается постоянно.
Давайте напишем следующий код:
position.x = position.x+1
В верхней правой части годо жмем на кнопку "play".
И вуаля - наш спрайт поехал!
(если при запуске годо ругается на то, что не выбрана главная сцена, то просто укажите на текущую)
Если мы добавим ниже
rotation_degrees = rotation_degrees +1
то наш спрайт во время движения будет еще и вращаться.
Надеюсь вы заметили, что годо сам предлагает вам закончить строки во время написания. Согласитесь , это очень сильно упрощает написание кода.
Поздравляю, вы только что написали свой первый скрипт.
В следующем уроке мы напишем простенькое управление объектом с клавиатуры.