Оглавление:
- Шаг 1: Подключение кнопок управления к Arduino
- Шаг 2: Кодирование Arduino Leonardo:
- Шаг 3:
- Шаг 4:
- Шаг 5:
- Шаг 6:
- Шаг 7:
- Шаг 8: Движение кодирования в единстве:
- Шаг 9:
- Шаг 10:
- Шаг 11:
- Шаг 12:
- Шаг 13:
- Шаг 14: Подключение света к Arduino
- Шаг 15: Кодирование Arduino Uno
- Шаг 16:
- Шаг 17:
- Шаг 18: Coding Lights Сторона Unity:
- Шаг 19:
- Шаг 20:
- Шаг 21:
- Шаг 22:
- Шаг 23:
- Шаг 24:
Видео: Игровой контроллер Arduino с подсветкой, реагирующей на вашу игру Unity :: 24 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Во-первых, я записал это на словах. Это первый раз, когда я использую инструкцию, поэтому всякий раз, когда я говорю: напишите код так, знайте, что я имею в виду изображение в верхней части этого шага.
В этом проекте я использую 2 Arduino для запуска 2 отдельных бит кода, так как у меня возникли проблемы с его работой только с одним
Это Уно и Леонардо
в общем, это то, что вам нужно для макета этого проекта.
· 7 кнопок
· 23 перемычки
· 1 кабель arduino Leonardo + usb
· 4 резистора · 4 светодиода
· 1 кабель arduino uno + usb
· 2 макета
Шаг 1: Подключение кнопок управления к Arduino
Что вам понадобится для подключения этой части:
· 7 кнопок
· 14 перемычек
· 1 кабель arduino Leonardo + usb
· Макетная плата
Кнопки довольно просто подключить, но при отображении в виде изображений они могут быстро превратиться в беспорядок.
· Сначала поместите кнопки в положения, отмеченные мною на изображении выше.
· Во-вторых, вы хотите подключить перемычку от разъема заземления на Arduino Leonardo к минусовой строке макета.
· Теперь вы подключаете перемычки из любого места отрицательного ряда к ряду, который совпадает с правым контактом вашей кнопки. это будет питать его.
· Затем вы хотите подключить перемычку из ряда, который совпадает с левым контактом вашей кнопки, к слотам цифровых входов Леонардо. Для кнопок здесь я использовал слоты 2 - 3 - 4 - 5 - 6 - 7 - 8
Я показал только провод, идущий ко входу 8 на изображении, потому что это становится очень грязным изображением, чтобы показать вам все провода, пересекающие друг друга.
Шаг 2: Кодирование 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
·
Что вам понадобится для подключения этой части:
· 9 перемычек
· 4 резистора
· 4 светодиода
· 1 кабель arduino uno + usb
· Макетная плата
Подключение к фарам будет производиться через Uno.
Это будет выглядеть как на изображении выше:
Вы подключаете резисторы к длинной стороне светодиодов. И затем вы подсоединяете перемычку от цифрового пина на разъеме uno к резисторам. в этом случае я использовал цифровые пины 9 - 10 - 11 - 12, эти числа будут актуальны, когда мы перейдем к коду для фонарей.
Оттуда вы хотите подключить перемычку от разъема заземления на вашем Arduino Uno к месту на вашей плате, как показано на черном проводе на изображении выше.
Затем вы хотите, чтобы к короткому концу каждого светодиода было подключено 4 перемычки.
Шаг 15: Кодирование 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:
Прежде чем мы перейдем к этому, сначала сделайте две вещи.
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 цветных шара. Поэтому я написал небольшой скрипт, который гарантирует, что когда он приблизится к одному и нажмет правую кнопку, он поднимет его, и он отправит сигнал на ардуино, что в этом случае желтый шар был поднят. Чтобы он знал, хорошо, мне нужно включить желтый светодиод:
Вы можете поместить эту одну строчку кода где угодно. Если вы хотите, чтобы он загорался при запуске игры, включите функцию запуска. Хотите, чтобы он загорелся, когда он умирает, включите его в свою функцию для смерти игроков. Поэкспериментируйте немного. Я решил сделать огни своего рода элементом пользовательского интерфейса вне игры, чтобы отслеживать шары, которые вам нужно собрать, не загромождая экран.
Рекомендуемые:
Беспроводной семейный игровой контроллер для 4 игроков: 3 шага
Беспроводной семейный игровой контроллер для 4 игроков: это беспроводной контроллер в аркадном стиле, на котором могут играть одновременно 4 человека. Он беспроводной, поэтому вам не нужно привязывать компьютер к контроллеру, которым пользуются пятилетние дети. Они все время падают, и я не хочу, чтобы они уничтожили все мои игрушки, когда
Контроллер DIY на базе Arduino - Игровой контроллер Arduino PS2 - Игра в Tekken с DIY-геймпадом Arduino: 7 шагов
Контроллер DIY на базе Arduino | Игровой контроллер Arduino PS2 | Игра в Tekken с помощью DIY Arduino Gamepad: Здравствуйте, ребята, играть в игры всегда весело, но играть с вашим собственным игровым контроллером DIY еще веселее. Поэтому мы создадим игровой контроллер с использованием arduino pro micro в этих инструкциях
Беспроводной игровой контроллер с Arduino и NRF24L01 + (поддержка одного или двух контроллеров): 3 шага
Беспроводной игровой контроллер с Arduino и NRF24L01 + (поддержка одного или двух контроллеров): вы можете найти полный проект на моем веб-сайте (он на финском языке): https://teukka.webnode.com/l/langaton-ohjain-atmega-lla- ja-nrf24l01-radiomoduulilla / Это действительно краткий брифинг о проекте. Я просто хотел поделиться этим, если кто-нибудь скажет
Игровой контроллер Arduino + игра Unity: 5 шагов
Игровой контроллер Arduino + игра Unity: в этой инструкции я покажу вам, как создать / запрограммировать игровой контроллер Arduino, который может подключаться к единству
Как переслать вашу почту TIGERweb на вашу учетную запись электронной почты: 5 шагов
Как пересылать вашу почту TIGERweb на вашу учетную запись электронной почты: Давайте посмотрим правде в глаза, почту TIGERweb очень сложно проверять. Microsoft Outlook Web Access работает медленно, с ошибками и, как правило, неприятен в использовании. Вот тут-то и пригодится этот учебник. Как только вы здесь закончите, вы, надеюсь, сможете проверить всю свою электронную почту TIGERweb