Добавить в корзинуПозвонить
Найти в Дзене

Проект "Столкновения". Спрайт "Бочка1" будем толкать по сцене. Snap4Arduino #4_3

Предыдущий материал по проекту. Загрузите созданный ранее проект. Если что, текущую стадию проекта в виде файла xml можно загрузить из электронного архива, файл Столкновение1_2.zip У нас уже есть спрайт со "стрелочкой", замените ему костюм с использованием файла "бочка.png" (откуда брать костюмы - в первой части проекта). Дайте спрайту название "Бочка". Скрипт данного спрайта должен предусматривать отодвигание от любого другого спрайта, которого он касается, а в случае касания нескольких - отодвигание от каждого из них. Поэтому придётся немножко поработать со списками. Мы будем проверять список спрайтов-соседей элемент за элементом. Блок "сразу" (из группы Управление) заставляет эту часть скрипта выполняться максимально быстро. • Соберите скрипт для спрайта "Бочка" по образцу на рисунке (пояснения ниже). Пояснения: блок работы со списком берем из группы Переменные (там коричневые блоки - списки) В последующие блоки параметр "элемент" просто перетаскиваем из основного блока (Для каждог
Оглавление

Предыдущий материал по проекту.

Добавим в наш проект полезный груз.

Загрузите созданный ранее проект. Если что, текущую стадию проекта в виде файла xml можно загрузить из электронного архива, файл Столкновение1_2.zip

У нас уже есть спрайт со "стрелочкой", замените ему костюм с использованием файла "бочка.png" (откуда брать костюмы - в первой части проекта). Дайте спрайту название "Бочка".

Рис.1
Рис.1

Скрипт данного спрайта должен предусматривать отодвигание от любого другого спрайта, которого он касается, а в случае касания нескольких - отодвигание от каждого из них. Поэтому придётся немножко поработать со списками. Мы будем проверять список спрайтов-соседей элемент за элементом. Блок "сразу" (из группы Управление) заставляет эту часть скрипта выполняться максимально быстро.

• Соберите скрипт для спрайта "Бочка" по образцу на рисунке (пояснения ниже).

Рис. 2
Рис. 2

Пояснения: блок работы со списком берем из группы Переменные (там коричневые блоки - списки)

 Рис.3
Рис.3

В последующие блоки параметр "элемент" просто перетаскиваем из основного блока (Для каждого...).

Проверьте, как всё функционирует. Робот толкает груз!

Рис.4
Рис.4

Добавляем копии спрайта "Бочка" и спрайты препятствий.

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

• Добавьте в проект копии спрайта "Бочка" (рис.5). Неважно, какие имена они при этом получат. Запустите проект и проверьте, что выйдет, если бочки "нагромождены" одна на другую.

Рис.5
Рис.5

Что будет, если толкать одну из бочек на другую, или сразу на несколько?

Рис.6
Рис.6

• Наконец, добавьте спрайты статических препятствий. Используемый нами алгоритм работает оптимально со спрайтами округлой формы, но слегка вытянутые свою роль тоже выполняют. Спрайт "Стенка" препятствует сдвиганию груза вбок при перемещении (рис. 7).

Рис.7
Рис.7

Из подготовленных спрайтов как из конструктора можно собирать самые разнообразные игровые задания. Теперь мы в состоянии построить лабиринт, по которому робот должен будет перемещать бочки. Не забывайте, что вы можете подстраивать параметры объектов под проект, менять углы поворотов, размеры отображения объектов и т.д. Экспериментируйте!

В следующем материале доработаем проект - снабдим робота специальными захватами. Будет интересно))))

PS. На всякий случай - текущую стадию проекта в виде файла xml можно загрузить из электронного архива, файл Столкновение1_3.zip