close

Рабочая программа «Разработка компьютерных игр на движке Godot Engine» Знакомство с Godot Engine и Проект «Pong». Часть 8

Создаем отскок мяча

Отбивание чего-либо в Годот возможно с помощью функции «move_and_collide()».

Мы использовали для столкновение мяча функцию «move_and_slide()», давайте узнаем какая между ними разница.

move_and_slide()

Эта функция высчитывает столкновение объектов, но она позволяет скользить им по поверхности. Подобную функцию часто используют для игр жанра платформер. И игры в которых нужно просчитывать скольжение.

move_and_collide()

При столкновение объекты этой функции останавливаются, но столкновение возвращает объект с которым произошло столкновение.

Мы будем использовать функцию «move_and_collide()» для столкновение мяча, исправьте код в скрипте мяча. Мы умножим не только на направление и скорость, а еще и на дельту.

И позвольте рассказать, что такое «delta».

Delta – это количество времени прошедшая с момента вызова последнего кадра игры. Если игра привязана к частоте кадров, то она работает быстрее на быстром ПК и медленней на медленном. Дельта же уравновешивает это, так как она берёт время, пройденное с последнего кадра, в итоге на любом ПК игра будет работать идентично не важно лагает она или нет.

Дельта — это числовое значение с плавающий точкой. Дельта достаточна маленькое значение. Если у вас достаточно мощный ПК, то ваша игра будет работать намного быстрее, но дельта будет маленького значения и будет умножаться на скорость объектов достаточно часта. А если же медленный компьютер, то дельта будет больше и умножаться будет реже. Тем самым с помощью дельты мы можем уравновесить скорость игровых объектов.

Функция «move_and_collide()» также возвращает объект с которым столкнулись, так что мы используем это. Поместим объект столкновение в переменную «collision_object» чтобы вычислять объекты с которым столкнулся наш мяч.

Используем условие. Поместим переменную «collision_object» в условие, если переменная имеет объект столкновение, то в условие будет отправляться «Истина», если же нет, то «Ложь».

(pass – это заглушка для всяких условий, циклов, по сути эта команда ничего не выполняет, но предотвращает ошибку)

В пишем такую конструкцию:

А теперь позвольте объяснить, что здесь происходит, про иллюстрировав происходящие.  Здесь вы видите мяч сталкивающийся со стенкой, и здесь мы хотим, чтобы наш мяч отскочил от стенки, и для этого нам понадобиться то что называется нормалью. А нормаль — это просто направление в котором направлена плоскость. Сейчас наша стена (она же плоскость или поверхность) направлена вверх, и мы можем использовать нормаль для вычисление отскока мяча в нужном направлении. И чтобы направлять наш мяч в нужном направлении мы и используем метод «bounce» который применяет аргументом объект столкновения, а точнее его нормаль.

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

В следующем разделе мы займемся создание ИИ нашего противника.

Категория: Разработка игр на Godot Engine | Добавил: Doctor_Bug (10.12.2022)
Просмотров: 26 | Рейтинг: 5.0/1
Всего комментариев: 0
avatar