Найти в Дзене

№54. KinematicBody2D. Физика.

ВАЖНО!
В Godot4 заменено на CharacterBody2D, + чуть изменен синтаксис.
ВНИМАНИЕ.
Изложенная ниже информация — это не капитальный урок в котором вы найдете тщательное описание каждой функции. Это скорее обзорная статья из которой можно подчерпнуть начальные знания для легкого старта. Вообще, KinematicBody2D это часть «физического мира» годо.
В него входят такие ноды как RigidBody, StaticBody2D и Area2D. И сам по себе KinematicBody призван упростить жизнь при управлении персонажем, беря на себя все проблемы с коллизиями. По сути , вам вообще не нужно об этом думать. Вы просто управляете персонажем и он сам останавливается перед препятствиями… Вот так просто. Разработчики рекомендуют организовывать код в _physics_process . Собственно сам код предельно простой. Вы обьявляете переменную (вектор) которая будет собирать в себя все данные по движению, указываете её в качестве аргумента в метод move_and_slide, и вобщем то на этом всё. В нашем случае персонаж начнет движение по оси Х пока не

ВАЖНО!
В Godot4 заменено на CharacterBody2D, + чуть изменен синтаксис.


ВНИМАНИЕ.
Изложенная ниже информация — это не капитальный урок в котором вы найдете тщательное описание каждой функции. Это скорее обзорная статья из которой можно подчерпнуть начальные знания для легкого старта.

Вообще, KinematicBody2D это часть «физического мира» годо.
В него входят такие ноды как RigidBody, StaticBody2D и Area2D.

И сам по себе KinematicBody призван упростить жизнь при управлении персонажем, беря на себя все проблемы с коллизиями.

По сути , вам вообще не нужно об этом думать. Вы просто управляете персонажем и он сам останавливается перед препятствиями… Вот так просто.

Разработчики рекомендуют организовывать код в _physics_process .

Собственно сам код предельно простой. Вы обьявляете переменную (вектор) которая будет собирать в себя все данные по движению, указываете её в качестве аргумента в метод move_and_slide, и вобщем то на этом всё.

В нашем случае персонаж начнет движение по оси Х пока не уедет из экрана.

Вместо постоянного движения я прикрутил управление с клавиатуры персонажу.

Добавил в сцену StaticBody2D для создания статичных физических объектов , в нашем случае это пол. И добавил RigidBody2D (пистолет).

Запустим игру , и наш персонаж будет взаимодействовать с объектами без дополнительных манипуляций с настройками.

-2

Само собой мы можем получить различные данные, например по коллизии. В нашем случае получаем имя объекта с которым сталкивается наш персонаж.

-3

Все методы расписаны в родной справке к годо.

Отдельно хочется заострить внимание на том, что помимо метода move_and_slide есть еще move_and_collide.
Основные различия в том, что при использовании первого метода, наш объект при столкновении с препятствием будет как бы продолжать скользить вдоль поверхности, а во втором случае остановится.
Есть методы которые работают не везде. Например метод get_slide_collision будет обрабатываться только при move_and_slide.

Ну и еще одно отличие в том, что при использовании move_and_slide вам не нужно перемножать вектор движения на дельту.