2d polygon and ball physics
![](https://робокод.рф/wp-content/uploads/2024/05/image-1024x576.png)
Создаем 2D сцену. Наща сцена схлопнется до 2D.
![](https://робокод.рф/wp-content/uploads/2024/05/image-1-1024x576.png)
Создаем статическое тело и добавляем ему 2 объекта внутри CollisionShape2D и Polygon2D
![](https://робокод.рф/wp-content/uploads/2024/05/image-2.png)
Начинаем создавать карту на которой будет перемещаться наше физическое тело
Для добавления новых точек можно использовать следующие элементы
![](https://робокод.рф/wp-content/uploads/2024/05/image-3.png)
![](https://робокод.рф/wp-content/uploads/2024/05/image-5-1024x605.png)
После создания основного полигона Polygon2D. По его контуру тоже самое делается для CollisionPolygon2D. После создания контура CollisionPolygon2D произойдет разбиение сложной фигуры на простые
как треугольники и четырехугольники. Не существует определенного правила для определения коллизии со сложной фигурой, но эту задачу можно свести к более простой путем деления многоугольника
на много треугольников и проверять коллизию в каждом из этих треугольников. Это работает медленнее чем обычный CollisionShape, поэтому стоить не создавать огромное число углов.
Для перемещения в godot можно зажимать колесико(перемещение) и вращать его(zoom).
Чтобы не потерять проделанную работу необходимо сохраниться. Для сохранения нажимает Ctrl+S, даем имя Node2D и нажимаем сохранить. После сохранения можно посмотреть на получившуюся сцену.
Необходимо нажать на треугольник справа сверху
![](https://робокод.рф/wp-content/uploads/2024/05/image-6-1024x576.png)
После создания ландшафта необходимо создать физический объект, который будет способен перемещаться по полю.
В качестве персонажа можно найти любую картинку в google или yandex, но если персонаж имеет неквадратную форму. То необходимо находить картинки, которые поддерживают прозрачность.
Я выбрал иконку годотика в качестве персонажа. Я должен создать структуру персонажа внутри узла Node2D, который является главным. Персонаж состоит из родительского узла Rigidbody2D и
из двух дочерних узлов: Sprite2D и CollisionShape2D.
![](https://робокод.рф/wp-content/uploads/2024/05/image-9-1024x576.png)
После создания ландшафта необходимо создать физический объект, который будет способен перемещаться по полю.
В качестве персонажа можно найти любую картинку в google или yandex, но если персонаж имеет неквадратную форму. То необходимо находить картинки, которые поддерживают прозрачность.
Я выбрал иконку годотика в качестве персонажа. Я должен создать структуру персонажа внутри узла Node2D, который является главным. Персонаж состоит из родительского узла Rigidbody2D и
из двух дочерних узлов: Sprite2D и CollisionShape2D.
![](https://робокод.рф/wp-content/uploads/2024/05/image-7.png)
У спрайта необходимо настроить свойство Texture. Для этого просто перенесем icon.svg в свойство Texture. Объекты будут появляться в начале координат. НЕЛЬЗЯ их двигать. Принцип работы с
Объектами очень прост. Сначала мы их составляем, затем настраиваем каждый отдельный внутренний узел, после группируем и после этого их можно перемещать.
![](https://робокод.рф/wp-content/uploads/2024/05/image-8.png)
После настройки текстуры настраиваем CollisionShape2D. Выбираем правильную форму в свойстве Shape.
![](https://робокод.рф/wp-content/uploads/2024/05/image-11.png)
Дальше остается настроить размеры коллизии используя оранжевые точечки.
![](https://робокод.рф/wp-content/uploads/2024/05/image-10.png)
![](https://робокод.рф/wp-content/uploads/2024/05/image-13.png)
После настройки каждого узла выделяем родительский
![](https://робокод.рф/wp-content/uploads/2024/05/image-12.png)
И группируем его
![](https://робокод.рф/wp-content/uploads/2024/05/image-14.png)
Объект Rigidbody2d будет иметь иконку группировки
![](https://робокод.рф/wp-content/uploads/2024/05/image-15.png)
После этого можно переместить нашего персонажа в пределах экрана(синей рамки. При соприкосновении с осями цвет становится фиолетовым и голубоватым).
![](https://робокод.рф/wp-content/uploads/2024/05/image-17.png)
Во время запуска персонаж должен будет упасть на землю.
![](https://робокод.рф/wp-content/uploads/2024/05/image-19-1024x603.png)
Теперь необходимо научить вращаться нашего персонажа.
Для этого создадим скрипт, который будет за это отвечать(не забудь выделить узел Rigidbody2d)
![](https://робокод.рф/wp-content/uploads/2024/05/image-16.png)
Далее нам предлагают опции при создании скрипта, но мы просто нажимаем создать так как нас все устраивает.
![](https://робокод.рф/wp-content/uploads/2024/05/image-18.png)
Сгенерируется фрагмент кода, который нам не нужен. Поэтому мы удаляем все, кроме первой строчки.
![](https://робокод.рф/wp-content/uploads/2024/05/image-20.png)
![](https://робокод.рф/wp-content/uploads/2024/05/image-21.png)
Пишем функции обработки физики, она обновляется так быстро как позволяем движок. Каждый раз мы должны спрашивать нажаты ли
Стрелочки вправо или влево. И если какая-то из них нажата, то необходимо изменять угловую скорость.
ПРО СИНТАКСИС: Отступы важны и ставятся, чтобы обозначить, что строчки принадлежат функции или условному оператору!
![](https://робокод.рф/wp-content/uploads/2024/05/image-22.png)
Теперь можно управлять персонажем на стрелочки.
Идеи для улучшения:
- Сделать границу для карты сверху используя CollisionPolygon2D
- Добавить возможность прыжка, но это будет больше похоже на ракетный ранец.
- Прикрепить камеру на персонажа и сделать карту неограниченной размерами экрана.