Занятие 7.6 Настройка столкновений

Цель: разработать для проекта "Космическая миссия" вкладку логики “Логика столкновений”.

Задачи:

  • Реализовать интерфейс и логику управления ровером
  • Закрепить навык тестирования своих проектов
  • Закрепить навыки работы с логическими блоками в Blockly
  • Закрепить навыки работы с активацией/деактивацией объектов
  • Закрепить навыки работы с продвинутыми функциями текста
  • Закрепить навык тестирования своих проектов
  • Закрепить навыки работы с UI/UX - дизайном
  • Закрепить навыки работы с событиями “Объект начали использовать”

Вкладка Логика столкновений.

Сейчас мы приступим к одному из самых трагичных моментов нашей логики приложения - к столкновению ровера с препятствиями, которое может привести к его полному разрушению. С другой стороны, когда ровер столкнется с Маяком - это хорошо, тогда мы перейдем к следующему этапу Космической миссии.

Для реализации логики столкновений снова обратимся к Циклам и перебору элементов их Списка Препятствий:

Логика здесь следующая: в момент столкновения Ровера с каким-нибудь объектом цикл перебирает объекты из списка Препятствия, если один из объектов является target (целевым), т.е. соответствует объекту из списка Препятствия, то переменная Здоровье ровера уменьшается на одну единицу (декремент) и обновляется информация на UI “Целостность ровера”, которое мы разместили на сцене в предыдущем пункте (п. 8.2.3.).

Рассмотрим самый худший вариант, когда мы снизили здоровье ровера до “0”:

В этом блоке мы активируем UI “Конец” и устанавливаем на нем текст: “Ровер уничтожен. Миссия не может быть выполнена. Нажмите на эту панель для перезапуска”.

Блок выше отвечает за перезапуск сцены. Далее он нам пригодится и для счастливого финала, только текст будет иной.

Для активации счастливого финала Ровер должен столкнуться с Маяком.

Перед созданием логики столкновения Ровера с Маяком, давайте разместим на локации поверх интерфейса Ровера еще два объекта UI, которые будут отвечать за управление вычислением Оптимального угла (UI “Вычислитель”) и поворотом Радара на Оптимальный угол (UI “Корректировщик”):

Теперь разберем как работает блок события при столкновении с Маяком:

Логика здесь следующая: в момент, когда Ровер сталкивается с объектом и если этот объект является Маяком запускается Цикл по i (1).

Данный цикл перебирает и создает случайные значения для каждого элемента в списке Список координат (от 1 до “Длины списка “Список координат”, 2).

Блок Длина списка находится в категории “Списки”:

Примечание: Вы помните, что в Момент инициализации мы создавали список Координат из 5 элементов, но с помощью блока Длина списка мы можем автоматически измерить длину этого списка (иначе нам каждый раз вручную пришлось бы вводить количество элементов при изменении их количества).

Пока i меньше длины списка мы перебираем его элементы, и для каждого элемента присваивается случайное значение угла от 0 до 360 (3), а также мы дополняем переменную Текст с координатами этим сгенерированным значением.

Для этого используем блок из Категории “Текст” (4):

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

Как только i будет больше пяти (длины списка Координат), то выполнится команда Выйти из цикла.

На этом Цикл будет завершен.

Последнее, что нам нужно будет сделать - это активировать объект UI Вычислитель”, который будет отвечать за вычисление Оптимального угла  и активировать функцию Деактивация интерфейсов ровера в теле условного оператора, поскольку далее по логике сценария эти интерфейсы нам больше не понадобятся.

И уже на следующем занятии мы перейдем к самой приятной финальной части.

Контрольные вопросы (выборочно можно использовать на этапе рефлексии, для проверки усвоения знаний, полученных на занятии):

  1.  В каких случаях нам может пригодиться длина списка?
  2. Что такое target и для чего он нужен?
Последнее изменение: Четверг, 1 Февраль 2024, 20:30