В прошлом уроке мы начали знакомиться с синтаксисом, узнали про работу с переменными. Теперь нам предстоит изучить логические конструкции (операции), а вместе с тем, напишем управление движением объекта.
Логические операции это очень важная часть программирования. Логическая операция в нашем случае это...
Некоторые действия, исполняемые если истинно заданное условие.
Где это используют? Везде. Точка.
В GDScript есть свои логические операторы (подобные операторам языка Python), вот список основных:
- if
- else
- elif
Для проверки равенства используется "==". Например: if a == b.
If исполняет действия если принимаемое выражение истинно.
На нескольких простых примерах рассмотрим применение каждого оператора.
Многие функции, которые мы будем использовать в будущем изначально возвращают значение Boolean (Истина/Ложь).
Управление объектом. Теперь мы можем сделать незавмысловатую систему управления объектом на экране. Переходим на нашу сцену, создаем узел KinematicBody2D (CharacterBody2D в Godot 4.0).
К этому узлу добавляем узел Sprite, после чего вы должны найти любое изображение и добавить его в проект (В папку самого проекта либо перетащив изображение в область Файловая система). После этого в узле Sprite в качестве текстуры выбираем это изображение.
Прикрепляем узлу KinematicBody2D (не перепутайте со сценой или спрайтом) новый скрипт. Дальше необходимо сделать так, чтобы мы взаимодействовали с игрой с помощью клавиатуры. Заходим в Проект >> Настройки проекта >> Список действий. Я добавлю действия up, down, left, right. Для каждого действия можно (и нужно) добавить соответствующую клавишу / кнопку мыши / кнопку контроллера.
Теперь с помощью клавиатуры мы будем отправлять сигналы игре. Перейдем к коду.
Создаем переменную типа Vector2(), он несет в себе значения x и y. Дальше используем метод _physics_process(delta). И, с помощью оператора if, меняем значение переменной. Для проверки нажатия клавиши необходима функция Input.is_action_pressed("название действия"), указываем в ней название нашего действия. Например, проверка действия up выглядит так:
А дальше все просто, ноль в системе координат Godot находится в верхнем левом углу экрана, соответственно если мы двигаемся влево - X меняется в минус, если в право - в плюс, если мы двигаемся вверх - Y меняется в минус (!), если вниз - в плюс. В итоге код выглядит так:
Теперь используем функцию перемещения объекта - move_and_slide(). в ней указываем два значения - переменную-вектор и значение Vector2.UP. выглядит это так:
Но чтобы объект не двигался по одному пикселю, умножаем первое значение на 50 (к примеру). Вы можете так же создать переменную скорости и умножать вектор на нее.
Запустите проект и оцените результат. После этого советую самому экспериментировать с кодом. Попробуйте использовать vector.x += 1 вместо vector.x = +1. Попробуйте менять скорость. Попробуйте останавливать объект, когда клавиши не зажаты. Попробуйте влиять на объект гравитацией по разным осям.
Если вы напуганы сложным кодом - практика все исправит. Чем больше практики - тем больше прикладной информации у вас в голове. Практика поможет осознать что и зачем вы пишите в скрипте. А на этом сегодняшний урок окончен. В следующем уроке я расскажу про коллизии объектов.
Не понравилась статья? Поделись своими эмоциями в комментариях и будущие статьи будут чуть лучше!