1. Загрузка движка . Заходим на официальный сайт godot и загружаем последнюю версию движка на любую из указанных платформу. https://godotengine.org/
2. Создаем папку игры . Советую создать отдельную папку где вы будете хранить движок и проекты, а для каждого проекта создавать собственную папку.
3. Создаем проект . Нажимаем на кнопку 'новый проект' , 'обзор' ,выбираем нужную папку.
4.Перекидываем в эту папку нужные спрайты (изображения).
5.Создаем основную сцену. Нажимаем на кнопку 2D сцена и переименовываем в main для удобства. Сохраняем. Сцена -> Сохранить сцену-> Сохранить
6. Создаем сцену игрока. Другой узел-> rigidbody 2d-> Создать. Переименовываем в player . Перетаскиваем в центр из файловой системы спрайт игрока. Добавляем дочерний узел collisionshape 2D. Создаем скрипт.
7. Пишем скрипт передвижения. Так как мы не можем напрямую взаимодействовать с позицией игрока, мы будем применять к нему силу командами apply_impulse и apply_force . Apply_impulse создает единовременный толчок в определенную сторону , а apply_force создает силу которая действует постоянно, но мы будем использовать первую команду. Для начала мы создаем новые действия через настройки проекта. Проект-> настройки проекта-> список действий. В поле добавить новое действие вводим название действий , я буду использовать действия a,d и shoot. После ввода названия нажимаем кнопку добавить. Нажимаем на плюсик справа от появившегося действия и нажимаем на нужную кнопку на клавиатуре или мыши.
Переходим в сам скрипт . Проверяем нажата ли та или иная кнопка командой if Input.is_action_pressed('название действия') : . Применяем apply_impulse(Vector2(x,y).rotated(rotation)) , где rotated отвечает за то чтобы координатная плоскость прикреплялась к повороту объекта. Примечание : к этой команде применимы только переменные типа Vector2, поэтому или создаем отдельную переменную командой var название = Vector2(x,y), или вводим в саму команду Vector2(x,y)!!!! То же самое делаем для движения в обратную сторону apply_impulse(Vector2(-x,y).rotated(rotation)). Весь код выглядит так.
extends RigidBody2D
@onready var vel=Vector2(20000,0)
@onready var not_vel=Vector2(-20000,0)
func _process(delta):
if Input.is_action_pressed('a'):
apply_impulse(not_vel.rotated(rotation))
if Input.is_action_pressed('d') :
apply_impulse(vel.rotated(rotation))
Продолжение завтра.