2d polygon and ball physics 

Создаем 2D сцену. Наща сцена схлопнется до 2D.  

Создаем статическое тело и добавляем ему 2 объекта внутри CollisionShape2D и Polygon2D 

Начинаем создавать карту на которой будет перемещаться наше физическое тело 

Для добавления новых точек можно использовать следующие элементы 

После создания основного полигона Polygon2D. По его контуру тоже самое делается для CollisionPolygon2D. После создания контура CollisionPolygon2D произойдет разбиение сложной фигуры на простые 
как треугольники и четырехугольники. Не существует определенного правила для определения коллизии со сложной фигурой, но эту задачу можно свести к более простой путем деления многоугольника 

на много треугольников и проверять коллизию в каждом из этих треугольников. Это работает медленнее чем обычный CollisionShape, поэтому стоить не создавать огромное число углов.  

Для перемещения в godot можно зажимать колесико(перемещение) и вращать его(zoom). 

Чтобы не потерять проделанную работу необходимо сохраниться. Для сохранения нажимает Ctrl+S, даем имя Node2D и нажимаем сохранить. После сохранения можно посмотреть на получившуюся сцену. 

Необходимо нажать на треугольник справа сверху 

После создания ландшафта необходимо создать физический объект, который будет способен перемещаться по полю. 

В качестве персонажа можно найти любую картинку в google или yandex, но если персонаж имеет неквадратную форму. То необходимо находить картинки, которые поддерживают прозрачность. 

Я выбрал иконку годотика в качестве персонажа. Я должен создать структуру персонажа внутри узла Node2D, который является главным. Персонаж состоит из родительского узла Rigidbody2D и  

из двух дочерних узлов: Sprite2D и CollisionShape2D.  

После создания ландшафта необходимо создать физический объект, который будет способен перемещаться по полю. 

В качестве персонажа можно найти любую картинку в google или yandex, но если персонаж имеет неквадратную форму. То необходимо находить картинки, которые поддерживают прозрачность. 

Я выбрал иконку годотика в качестве персонажа. Я должен создать структуру персонажа внутри узла Node2D, который является главным. Персонаж состоит из родительского узла Rigidbody2D и  

из двух дочерних узлов: Sprite2D и CollisionShape2D.  

У спрайта необходимо настроить свойство Texture. Для этого просто перенесем icon.svg в свойство Texture. Объекты будут появляться в начале координат. НЕЛЬЗЯ их двигать. Принцип работы с 

Объектами очень прост. Сначала мы их составляем, затем настраиваем каждый отдельный внутренний узел, после группируем и после этого их можно перемещать. 

После настройки текстуры настраиваем CollisionShape2D. Выбираем правильную форму в свойстве Shape. 

Дальше остается настроить размеры коллизии используя оранжевые точечки. 

После настройки каждого узла выделяем родительский 

И группируем его 

Объект Rigidbody2d будет иметь иконку группировки 

После этого можно переместить нашего персонажа в пределах экрана(синей рамки. При соприкосновении с осями цвет становится фиолетовым и голубоватым). 

Во время запуска персонаж должен будет упасть на землю.  

Теперь необходимо научить вращаться нашего персонажа. 

Для этого создадим скрипт, который будет за это отвечать(не забудь выделить узел Rigidbody2d) 

Далее нам предлагают опции при создании скрипта, но мы просто нажимаем создать так как нас все устраивает. 

Сгенерируется фрагмент кода, который нам не нужен. Поэтому мы удаляем все, кроме первой строчки. 

Пишем функции обработки физики, она обновляется так быстро как позволяем движок. Каждый раз мы должны спрашивать нажаты ли 

Стрелочки вправо или влево. И если какая-то из них нажата, то необходимо изменять угловую скорость. 

ПРО СИНТАКСИС: Отступы важны и ставятся, чтобы обозначить, что строчки принадлежат функции или условному оператору! 

Теперь можно управлять персонажем на стрелочки. 

Идеи для улучшения: 

  1. Сделать границу для карты сверху используя CollisionPolygon2D 
  2. Добавить возможность прыжка, но это будет больше похоже на ракетный ранец. 
  3. Прикрепить камеру на персонажа и сделать карту неограниченной размерами экрана.