Найти тему
ndrew

Основы GDScript #2

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

Логические операции это очень важная часть программирования. Логическая операция в нашем случае это...

Некоторые действия, исполняемые если истинно заданное условие.

Где это используют? Везде. Точка.

В GDScript есть свои логические операторы (подобные операторам языка Python), вот список основных:

  • if
  • else
  • elif

Для проверки равенства используется "==". Например: if a == b.

If исполняет действия если принимаемое выражение истинно.

На нескольких простых примерах рассмотрим применение каждого оператора.

1. Проверка значения переменной (Вывод: True)
1. Проверка значения переменной (Вывод: True)
2. Аналогичная проверка с оператором Else (Вывод: False)
2. Аналогичная проверка с оператором Else (Вывод: False)
3. Конструкция с оператором Elif (Вывод: True)
3. Конструкция с оператором Elif (Вывод: True)

Многие функции, которые мы будем использовать в будущем изначально возвращают значение Boolean (Истина/Ложь).

Управление объектом. Теперь мы можем сделать незавмысловатую систему управления объектом на экране. Переходим на нашу сцену, создаем узел KinematicBody2D (CharacterBody2D в Godot 4.0).

К этому узлу добавляем узел Sprite, после чего вы должны найти любое изображение и добавить его в проект (В папку самого проекта либо перетащив изображение в область Файловая система). После этого в узле Sprite в качестве текстуры выбираем это изображение.

Если изображение слишком большое/небольшое, то можно изменять значения Scale во вкладке Transform.
Если изображение слишком большое/небольшое, то можно изменять значения Scale во вкладке Transform.

Прикрепляем узлу KinematicBody2D (не перепутайте со сценой или спрайтом) новый скрипт. Дальше необходимо сделать так, чтобы мы взаимодействовали с игрой с помощью клавиатуры. Заходим в Проект >> Настройки проекта >> Список действий. Я добавлю действия up, down, left, right. Для каждого действия можно (и нужно) добавить соответствующую клавишу / кнопку мыши / кнопку контроллера.

Настройка управления по WASD
Настройка управления по WASD

Теперь с помощью клавиатуры мы будем отправлять сигналы игре. Перейдем к коду.

Создаем переменную типа Vector2(), он несет в себе значения x и y. Дальше используем метод _physics_process(delta). И, с помощью оператора if, меняем значение переменной. Для проверки нажатия клавиши необходима функция Input.is_action_pressed("название действия"), указываем в ней название нашего действия. Например, проверка действия up выглядит так:

В строке 6 условие истинно, если клавиша W зажата.
В строке 6 условие истинно, если клавиша W зажата.

А дальше все просто, ноль в системе координат Godot находится в верхнем левом углу экрана, соответственно если мы двигаемся влево - X меняется в минус, если в право - в плюс, если мы двигаемся вверх - Y меняется в минус (!), если вниз - в плюс. В итоге код выглядит так:

-7

Теперь используем функцию перемещения объекта - move_and_slide(). в ней указываем два значения - переменную-вектор и значение Vector2.UP. выглядит это так:

-8

Но чтобы объект не двигался по одному пикселю, умножаем первое значение на 50 (к примеру). Вы можете так же создать переменную скорости и умножать вектор на нее.

-9

Запустите проект и оцените результат. После этого советую самому экспериментировать с кодом. Попробуйте использовать vector.x += 1 вместо vector.x = +1. Попробуйте менять скорость. Попробуйте останавливать объект, когда клавиши не зажаты. Попробуйте влиять на объект гравитацией по разным осям.

Если вы напуганы сложным кодом - практика все исправит. Чем больше практики - тем больше прикладной информации у вас в голове. Практика поможет осознать что и зачем вы пишите в скрипте. А на этом сегодняшний урок окончен. В следующем уроке я расскажу про коллизии объектов.

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

С подпиской рекламы не будет

Подключите Дзен Про за 159 ₽ в месяц