Оглавление:

Игровой контроллер Arduino с подсветкой, реагирующей на вашу игру Unity :: 24 шага
Игровой контроллер Arduino с подсветкой, реагирующей на вашу игру Unity :: 24 шага

Видео: Игровой контроллер Arduino с подсветкой, реагирующей на вашу игру Unity :: 24 шага

Видео: Игровой контроллер Arduino с подсветкой, реагирующей на вашу игру Unity :: 24 шага
Видео: 🕹️Играем в игры на светодиодной ленте! 2024, Ноябрь
Anonim
Игровой контроллер Arduino с подсветкой, реагирующий на вашу игру Unity
Игровой контроллер Arduino с подсветкой, реагирующий на вашу игру Unity

Во-первых, я записал это на словах. Это первый раз, когда я использую инструкцию, поэтому всякий раз, когда я говорю: напишите код так, знайте, что я имею в виду изображение в верхней части этого шага.

В этом проекте я использую 2 Arduino для запуска 2 отдельных бит кода, так как у меня возникли проблемы с его работой только с одним

Это Уно и Леонардо

в общем, это то, что вам нужно для макета этого проекта.

· 7 кнопок

· 23 перемычки

· 1 кабель arduino Leonardo + usb

· 4 резистора · 4 светодиода

· 1 кабель arduino uno + usb

· 2 макета

Шаг 1: Подключение кнопок управления к Arduino

Подключение кнопок управления к Arduino
Подключение кнопок управления к Arduino

Что вам понадобится для подключения этой части:

· 7 кнопок

· 14 перемычек

· 1 кабель arduino Leonardo + usb

· Макетная плата

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

· Сначала поместите кнопки в положения, отмеченные мною на изображении выше.

· Во-вторых, вы хотите подключить перемычку от разъема заземления на Arduino Leonardo к минусовой строке макета.

· Теперь вы подключаете перемычки из любого места отрицательного ряда к ряду, который совпадает с правым контактом вашей кнопки. это будет питать его.

· Затем вы хотите подключить перемычку из ряда, который совпадает с левым контактом вашей кнопки, к слотам цифровых входов Леонардо. Для кнопок здесь я использовал слоты 2 - 3 - 4 - 5 - 6 - 7 - 8

Я показал только провод, идущий ко входу 8 на изображении, потому что это становится очень грязным изображением, чтобы показать вам все провода, пересекающие друг друга.

Шаг 2: Кодирование Arduino Leonardo:

Кодирование Arduino Leonardo
Кодирование Arduino Leonardo

Итак, чтобы объяснить вам причину, по которой я использую для этого Леонардо. Это потому, что в нем есть определенный чип, которого нет в Uno, который заставляет компьютер распознавать его как устройство ввода USB. Очень похоже на клавиатуру. Это позволяет нам делать то, что значительно облегчает нашу жизнь программистам для этого проекта. Эмуляция клавиатуры. Мы собираемся обмануть компьютер, заставив его думать, что мы нажимаем определенные клавиши на клавиатуре, тогда как на самом деле мы нажимаем кнопки на нашем контроллере.

Теперь я покажу вам, как вы продумали код, шаг за шагом.

Сначала мы включаем Keyboard.h. Это позволит нам использовать функции клавиатуры, которые мы собираемся использовать в нашем коде.

Шаг 3:

Изображение
Изображение

Затем нам нужно определить слоты цифровых входов, которые мы собираемся использовать на

Леонардо за каждую пуговицу.

Я также назвал каждого из них в честь ключа, который собираюсь подражать.

Шаг 4:

Изображение
Изображение

Оттуда мы переходим к функции настройки. Это говорит

arduino, что он делает при запуске.

сначала мы пишем Serial.begin, который откроет последовательный порт и установит скорость передачи данных 9600 бит / с.

и мы определяем все именованные контакты как входы.

Шаг 5:

Изображение
Изображение

И, наконец, мы пишем нашу функцию цикла, которая будет проверять, нажимаются кнопки и сообщают Arduino, как на это реагировать.

Сначала мы пишем Keyboard.begin, которое сообщит arduino, что ему нужно следить за нами, используя функции клавиатуры.

Шаг 6:

Изображение
Изображение
Изображение
Изображение
Изображение
Изображение

Затем для каждой кнопки мы пишем оператор if / else, который выглядит следующим образом

Итак, вот что я сказал arduino: если моя левая кнопка нажата на контроллере, заставьте компьютер думать, что мы нажимаем клавишу «a», а если это не так, заставьте его думать, что мы отпустили клавишу.

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

Шаг 7:

Изображение
Изображение

Клавиши, которые мы сказали компьютеру нажать здесь, это W - A - S - D, которые

в значительной степени являются стандартом для движения в компьютерных играх и E - Q - и пробел, который в этом коде распознается как «», и это кнопки, которые я использую, чтобы поднять - закрыть и запустить в моей игре. Не стесняйтесь менять их на любые клавиши, которые, по вашему мнению, лучше подходят для вашей игры / контроллера.

Затем, наконец, мы говорим arduino остановить проверку того, какой Keyboard.end

Шаг 8: Движение кодирования в единстве:

Движение кодирования в единстве
Движение кодирования в единстве

Прежде всего позвольте мне сказать вам, что я делаю это для 2-й игры, поэтому

примеры, которые вы увидите, созданы для этого. В основном это означает, что я использую vector2, если вы работаете в 3D, вы будете использовать vector3. потому что вам нужно будет беспокоиться о дополнительном измерении движения в 3D.

Причина, по которой я использовал эмуляцию клавиатуры на стороне Arduino, заключается в том, что в Unity есть что-то встроенное для распознавания клавиш на клавиатуре, которые мы можем использовать.

Если вы откроете свой проект в единстве, перейдите в Edit -> Project settings -> Input. Вы можете видеть в своем инспекторе, что он загружает диспетчер ввода. Если вы нажмете на Axes, вы увидите, что открывается целая куча имен входов, которые обычно используются для контроллеров ПК, подобных тем, которые мы делаем сейчас. Два входа, которые мы собираемся использовать, - это горизонтальный и вертикальный, которые проверяют, как вы уже догадались, W-A-S-D.

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

Шаг 9:

Изображение
Изображение

Вы хотите дать этому игроку 2 вещи. Ящик-коллайдер 2d и

a Rigidbody 2d и отредактируйте их, как на изображении выше.

Шаг 10:

Изображение
Изображение

Затем вы хотите перейти в папку своих проектов и создать

С # скрипт. Который я назвал PlayerMovement.

В этом скрипте вы собираетесь определить 2 переменные. Публичный поплавок, который я называю moveSpeed. Это определит, насколько быстро вы продвинетесь. И частный Rigidbody2D, который я называю RigidPlayer. Которая будет искать твердых тел ваших игроков.

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

Шаг 11:

Изображение
Изображение

теперь в вашем Start () вы хотите сделать одну вещь, а именно:

убедитесь, что ваш RigidPlayer может найти вашего плательщика Rigidbody 2d. Вы делаете это с помощью следующей строки кода:

Шаг 12:

Изображение
Изображение

Затем переходим к update (). Вот куда мы идем

чтобы заставить игрока двигаться.

мы делаем это с помощью довольно простого оператора if, который будет смотреть на отрицательные и положительные ключи из горизонтального (AD) и вертикального (SW) и применять это как число, чтобы заставить нас надеть наше твердое тело 2d, чтобы подтолкнуть нашего игрока в направление. Это число будет умножено на переменную moveSpeed.

Шаг 13:

Изображение
Изображение

Наконец, вы хотите убедиться, что ваш игрок перестает двигаться, когда

вы ничего не нажимаете. Это вам так нравится:

Теперь, если вы хотите использовать свои 3 другие кнопки для чего-либо, что вы делаете с этим оператором if: if (Input. GetKeyDown (Keycode. Space))

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

Шаг 14: Подключение света к Arduino

Подключение светильников к Arduino
Подключение светильников к Arduino

·

Что вам понадобится для подключения этой части:

· 9 перемычек

· 4 резистора

· 4 светодиода

· 1 кабель arduino uno + usb

· Макетная плата

Подключение к фарам будет производиться через Uno.

Это будет выглядеть как на изображении выше:

Вы подключаете резисторы к длинной стороне светодиодов. И затем вы подсоединяете перемычку от цифрового пина на разъеме uno к резисторам. в этом случае я использовал цифровые пины 9 - 10 - 11 - 12, эти числа будут актуальны, когда мы перейдем к коду для фонарей.

Оттуда вы хотите подключить перемычку от разъема заземления на вашем Arduino Uno к месту на вашей плате, как показано на черном проводе на изображении выше.

Затем вы хотите, чтобы к короткому концу каждого светодиода было подключено 4 перемычки.

Шаг 15: Кодирование Arduino Uno

Кодирование Arduino Uno
Кодирование Arduino Uno

Хорошо, сначала мы собираемся снова определить наши переменные

Итак, сначала, какие цифровые входы мы используем для наших светильников. И мы собираемся создать символ myCol [20]

Шаг 16:

Изображение
Изображение

Затем в настройке мы снова хотим выполнить Serial.begin. Включите все наши светодиоды на выходе и выключите их при запуске.

Шаг 17:

Изображение
Изображение

И, наконец, вы хотите написать свою функцию цикла.

Это заставит Arduino читать любые данные, поступающие через последовательный порт, пока не произойдет одно из двух событий. Обнаружен либо символ перевода строки; это идентифицируется lf, который установлен в 10 и является первым аргументом или определенным количеством байтов, которые были прочитаны. Это третий аргумент, и для этого примера установлен только один байт. Данные хранятся в переменной myCol, для которой установлено значение char и ограничение 20. В readBytesUntil это второй аргумент. Или еще один способ объяснить это Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

И операторы if будут гарантировать, что определенные огни включаются, когда единство дает сигнал. В этом случае у меня есть 4 разноцветных светодиода, поэтому я использую unity send g для включения зеленого светодиода, b для включения синего светодиода, r для включения красного светодиода и y для включения желтого светодиода.

Шаг 18: Coding Lights Сторона Unity:

Кодирование фонарей Unity Side
Кодирование фонарей Unity Side

Прежде чем мы перейдем к этому, сначала сделайте две вещи.

1. в вашей программе кодирования arduino перейдите в Tool -> Port -> и проверьте, какой COM ваш uno включен. В моем случае это COM3 (это будет важно в коде)

2. в единстве Перейдите в Edit -> Project settings -> Player, затем в инспекторе нажмите на другие настройки, перейдите на уровень совместимости Api и переключите его из подсети. NET 2.0 только на. NET 2.0

Хорошо, готово. Давай займемся этим.

Щелкните правой кнопкой мыши свою иерархию и выберите «Создать пустой».

Это будет пустой игровой объект, который будет существовать в вашей игре только для хранения одного скрипта для нас. Я назвал этот объект Init.

Шаг 19:

Изображение
Изображение

Затем перейдите на вкладку проектов и создайте новый сценарий C #.

и назовите это отправкой.

Первое, что вы делаете, это записываете их в строки в разделах кода using:

используя System. IO. Ports;

using System. Threading;

это позволяет нам использовать переменную SerialPort

Шаг 20:

Изображение
Изображение

в этом скрипте мы сделаем следующие переменные. Теперь обратите внимание, что у меня есть COM3, это может быть для вас другим, как мы обсуждали в начале этого шага. Если это так, замените 3 цифрой, которую он сказал за вас.

Шаг 21:

Изображение
Изображение

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

функция, которую мы напишем немного

обновление - это скорее тест, чем что-либо, но если вы хотите включить его, чтобы проверить сообщения, отправляемые в единство. Вы могли честно игнорировать это.

Шаг 22:

Изображение
Изображение

Хорошо, теперь для этой функции OpenConnection. Это просто большой

Оператор if / else, который сохраняет соединение открытым, просто скопируйте его, как написано, и все будет в порядке.

Шаг 23:

Изображение
Изображение

Теперь вспомните из кода Arduino, что я проверял его на наличие

сигнализирует, что единство пошлет ему.

ну вот где это происходит. В моем случае я подключил 4 лампы, поэтому я написал 4 чрезвычайно простых функции. Все, что они делают, это когда их вызывают, они отправляют письмо на arduino. Когда arduino получает эту букву, он загорается светом, соответствующим этой букве.

Шаг 24:

Изображение
Изображение

Вам может быть интересно, как я могу назвать это

функция? Что ж, вы делаете это одной простой строкой в любом из ваших сценариев C #, которые вы используете для своей игры. Sending. NameFunctionhere ();. Так, например, в моей игре игроку поручено собрать 4 цветных шара. Поэтому я написал небольшой скрипт, который гарантирует, что когда он приблизится к одному и нажмет правую кнопку, он поднимет его, и он отправит сигнал на ардуино, что в этом случае желтый шар был поднят. Чтобы он знал, хорошо, мне нужно включить желтый светодиод:

Вы можете поместить эту одну строчку кода где угодно. Если вы хотите, чтобы он загорался при запуске игры, включите функцию запуска. Хотите, чтобы он загорелся, когда он умирает, включите его в свою функцию для смерти игроков. Поэкспериментируйте немного. Я решил сделать огни своего рода элементом пользовательского интерфейса вне игры, чтобы отслеживать шары, которые вам нужно собрать, не загромождая экран.

Рекомендуемые: