S4A часть 7
Элемент ввода джойстик
Это более сложный элемент, который в своем составе имеет несколько мелких элементов: кнопку и два потенциометра. Один потенциометр определяет положение рычажка по оси x, а второй – по оси y. Изначальное положение рычажка дают средние значения = 512.
Джойстик имеет пять контактов подключения, один для кнопки, два для координат x и y, 5V и контакт GND.
Лабиринт.
Создадим игру лабиринт, для этого нарисуем трассу для нашего лабиринта изменив «Сцену». Внешний вид контроллера Arduino изменим на треугольник.
Составим алгоритм, который позволит управлять движением и поворотом треугольника с джойстика. Добавим условия соприкосновения с красным и зеленым цветами. При попадании в красный объект будет возвращаться в начальную точку пути, при попадании в зеленый объявит «Победу».
ЗАДАНИЕ
Объединитесь в команды, подключите несколько контроллеров с джойстиками и добавьте на поле треугольники с другими цветами. Определите, кто из вас более умелый в управлении…
Игра «ТАНКИ»
Подключим джойстик, как сделано на Рисунке выше. Проект будет объемным и содержать три объекта (контроллер ардуино, танк и снаряд). Начнем со скрипта контроллера ардуино. Его задачей будет получение данных с джойстика.
A1 — Движение вперед (назад) — Уменьшим диапазон значений в сто раз (получим значения от 0 до 10). Сдвинем диапазон на 5 (от -5 до 5).
Это равно
Создадим переменную вперед для передачи движения
A2 — Поворот вправо (влево) — Уменьшим диапазон значений в сто раз (получим значения от 0 до 10). Сдвинем диапазон на 5 (от -5 до 5).
Это равно
Создадим переменную повернуть для передачи поворота
A3 — Огонь — Будем ловить момент низкого значения.
Чтобы пуля стреляла один раз, создадим переменную состояния, когда она выстрелила и летит (значение =1) и когда она готова к новому полету (значение = 0). Тогда условие огня будет зависеть от двух выражений
Добавим две процедуры огонь и движение, которые будут вызываться у снаряда и танка. Добавим новые объекты танк и снаряд, их можно загрузить как картинку найдя нужную в интернете. В моем случае танк получился немного больше, чем я этого планировал, но в последствии я могу скорректировать размер через оператор установить размер в %. Внешне мои объекты стали выглядеть, как на Рисунке.
Скрипт обработки сигналов, получаемых с джойстика
Список объектов проекта
Составим скрипт для движения нашего танка. Само движение будет осуществляться обрабатывая переменные вперед и повернуть. Так как у меня на картинке танк повернут налево, то повороты я буду совершать налево. Скорректируйте значения, для вашего танка.
Скрипт управления танком
После этих двух скриптов наш танк уже управляется с пульта и может передвигаться вперед-назад, совершать повороты вправо-влево. Но выстрела до сих пор еще не делает. Добавим скрипт для снаряда, которая будет выстреливать по событию огонь.
Скрипт обработки движения снаряда
Так как мой танк по картинке смотрит налево, то движение снаряда будет на шаг = (-1). Как только снаряд достигнет края, скрипт остановится и снаряд будет готов к новому выстрелу.
Теперь наш танк и передвигается и стреляет. Давайте добавим на поле препятствия. Для этого выделим сцену (Это и есть наше поле) перейдем к редактированию фона и нарисуем себе препятствия (В моем случае это выглядит как показано на Рисунке).
Внешний вид поля
Для того, чтобы танк не мог преодолевать препятствия и снаряд прекращал движение при соприкосновением с препятствием, мы добавим в наши скрипты для танка и для снаряда обработку соприкосновения с препятствием по цвету.
Скрипт танка с обработкой препятствия
Скрипт снаряда
Теперь мы можем объединить усилия – подключив к компьютеру несколько джойстиков и добавить другие танки… Также потребуется доработать скрипты, чтобы при попадании снаряда врага танк считался подбитым (Рисунок 6.10).
Скрипт обработки сигналов, получаемых с джойстика
Скрипт танка с двумя противниками
Всего комментариев: 0