xenofob

xenofob

На Пикабу
Дата рождения: 13 января
13К рейтинг 5 подписчиков 12 подписок 31 пост 9 в горячем
Награды:
10 лет на Пикабу
22

Физика в Godot 3.5 на примере одной машинки

Всем привет!


Да, вот так бывает, сидишь никого не трогаешь, примус починяешь Годот ковыряешь, статейки почитываешь, а потом тебе пишет @Boogernator, мол запили пост про машинку, которую ты мне показывал, а то я уже и анонс сделал 😁


Ну мне не жалко, если людям интересно то пожалуйста. Постарался максимально сжато и без воды. Поехали.


Вам понадобятся спрайты кузова и колеса автомобиля. Я использовал бесплатный ассет, в котором на выбор 12 видов транспорта.


Создайте в редакторе новый проект и создайте в нем папку res://assets/, куда добавьте два изображения - кузов и колесо:

Следующим шагом создайте сцену на основе узла RigidBody2D, назовите его Car и к нему дочерними узлами добавьте узлы Sprite и ColissionPolygon2D. В текстуру спрайта перетащите изображение кузова и в свойстве Scale установите значение 0.3:

Для добавления формы столкновения выберите узел ColissionPolygon2D и с помощью точек обведите контур кузова:

Узлу Car в инспекторе задайте массу и гравитацию, с этими значениями можно будет потом поиграть, чтобы добиться нужного результата:

Для колес создайте два узла RigidBody2D с дочерними элементами Sprite и CollisionShape2D. Добавьте текстуру и установите значение Scale на 0.3 по аналогии с кузовом. Разместите колеса на нужных местах, для удобства можете воспользоваться направляющей. Также добавьте форму у коллизий по форме колес:

Колесам тоже задайте гравитацию и массу:

Чтобы присоединить колеса к кузову автомобиля добавьте на сцену два узла Pinjoint2D и разместите их в дереве узлов по одному под каждым колесом а на сцене поставьте по центру каждого колеса:

Теперь у каждого узла Pinjoint2D в инспекторе надо выбрать узлы, которые он будет соединять. У заднего колеса это узлы WheelLeft и Car, у переднего WheelRight и Car соответственно:

Создайте сцену с именем Main на Node2D, это будет главная сцена с дорогой по которой поедет автомобиль. Создайте дорогу и ограничивающие барьеры на основе StaticBody2D, задайте им коллизию и текстуру, я использовал иконку годо. Сделайте эту сцену главной кликнув правой кнопкой мыши по сцене в панели файловой системы:

На главную сцену добавьте сцену с автомобилем как дочернюю:

Запустите проект (F5) и убедитесь, что автомобиль собран правильно, колеса не отваливаются и т.п.

Осталось написать несколько cтрок кода, в которых собственно вся сила поста. Т.к. RigidBody2D это физическое тело вы не можете его контролировать напрямую как KinematicBody2D, вместо этого используются гравитация, импульсы и т.д. Двигать автомобиль будем путем подачи крутящего момента на колесо при нажатии клавиш Right и Left.


Прикрепите к узлу Car скрипт со следующим содержимым:

Можно запускать и проверять:

Кому лениво все это повторять можете качнуть репозиторий.


На этом все. Всем приятных экспериментов! 🚕

Показать полностью 12 2
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества