Найти тему
Игровой движок Godot engine

№129. Практика. Персонаж пинает предметы.

В этой небольшой статье соберем проект в котором наш герой проходя мимо коробок сможет при желании их пнуть.

Персонаж у нас будет собран на ноде KinematicBody2D, уровень на TileMap, а коробки это RigidBody2D.

Вся сцена в моем случае выглядит вот так :

-2

Персонаж у нас отдельной сценой :

-3

Итак, по сути у нас тут одна единственная проблема : столкновения персонажа и коробок,так как кинематик по умолчанию взаимодеиствует с физическими телами.

Решается это обычным разносом обьектов по слоям колизий. В моем случае коробки я вынес во второй слой.

Можно заметить что персонажу добавлен рейкаст. С помощью него мы собственно и определяем, есть нам что пинать или нет.
При обнаружении обьекта над головой персонажа появляется облако со знаком восклицания.

-4

Луч один, при повороте персонажа влево, луч поворачивается влево через код.

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

-5

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

-6

Ну а теперь, что касается кода.

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

-7

get_parent().kick - это функция из корневого скрипта. Она принимает имя , и два значения — направление полета, и угловое ускорение.
Всё это подается в итоге на коробки.

-8

ВАЖНО .

Если вы пытаетесь повторить это в Godot4, то учтите что теперь импульс идет первым аргументом !!!

-9

Вот в общем то и вся магия. Ниже гифка с «внутренностями».

-10

Надеюсь вам был полезен этот материал.
Подписывайтесь на канал,
вступайте в группу в ВК, и не забывайте что у нас есть дискорд сервер.
Удачи в изучении годо !

#godot #gdscript #игровой движок #программирование #игры #уроки