Съдържание:
- Стъпка 1: Свързване на контролните бутони към Arduino
- Стъпка 2: Кодиране на Arduino Leonardo:
- Стъпка 3:
- Стъпка 4:
- Стъпка 5:
- Стъпка 6:
- Стъпка 7:
- Стъпка 8: Кодиране на движението в единство:
- Стъпка 9:
- Стъпка 10:
- Стъпка 11:
- Стъпка 12:
- Стъпка 13:
- Стъпка 14: Свързване на светлини към Arduino
- Стъпка 15: Кодиране на Arduino Uno
- Стъпка 16:
- Стъпка 17:
- Стъпка 18: Кодиране на светлини Unity Side:
- Стъпка 19:
- Стъпка 20:
- Стъпка 21:
- Стъпка 22:
- Стъпка 23:
- Стъпка 24:
Видео: Arduino Game Controller със светлини, отговарящи на вашата Unity игра :: 24 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07: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 в минусовия ред на дъската.
· Сега свързвате джъмперите от всяка точка на минус реда към реда, който е в съответствие с десния щифт на вашия бутон. това ще му даде енергия.
· След това искате да свържете джъмпер проводник от ред, който е в съответствие с левия щифт на вашия бутон, към цифровите входни слотове на Leonardo. За бутоните тук използвах слот 2 - 3 - 4 - 5 - 6 - 7- 8
Показах само проводника, който отива към вход 8 на изображението, защото става много объркана картина, за да ви покаже всички проводници, пресичащи се един друг.
Стъпка 2: Кодиране на Arduino Leonardo:
Така че, за да ви кажа причината, поради която използвам Леонардо за това. Това е така, защото има определен чип, който Uno няма, което кара компютъра да го разпознае като USB входно устройство. Подобно на клавиатура. Което ни позволява да направим нещо, което прави живота ни като програмисти за този проект адски много по -лесен. Емулация на клавиатурата. Ще накараме компютъра да си помисли, че натискаме определени клавиши на клавиатурата, когато всъщност натискаме бутони на нашия контролер.
Сега ще ви разкажа, помислихте кода стъпка по стъпка.
Първо, най -отгоре включваме Keyboard.h. Това ще ни позволи да използваме функциите на клавиатурата, които ще използваме в нашия код.
Стъпка 3:
След това трябва да определим слотовете за цифров вход, които ще използваме на
Леонардо за всеки бутон.
Аз също нарекох всеки от тях след ключа, който ще подражавам.
Стъпка 4:
Оттам влизаме във функцията за настройка. Това казва на
arduino какво прави при стартиране.
първо пишем Serial.begin, който ще отвори серийния порт и зададе скорост на предаване на данни на 9600 bps
и ние определяме, че всички са именувани щифтове като входове.
Стъпка 5:
И накрая пишем нашата циклична функция, която ще провери дали
бутоните се натискат и казват на arduino как да реагира на това.
Първо пишем Keyboard.begin, който ще каже на arduino, че той трябва да се грижи за нас, използвайки функциите на клавиатурата
Стъпка 6:
След това за всеки бутон пишем оператор if/else, който изглежда така
Ето какво казах на arduino тук: Ако левият ми бутон е натиснат на контролера, накарайте компютъра да мисли, че натискаме клавиша „а“и ако това не е така, накарайте го да мисли, че сме пуснали ключа.
По принцип повтаряте този блок код за всеки бутон на вашия контролер. с промени за всяка променлива и ключовете, които променливата трябва да подражава
Стъпка 7:
Ключовете, които казахме на компютъра да натисне тук, са W - A - S - D които
са почти стандарт за движение в компютърни игри и E-Q-и интервалът, който в този код е разпознат като „„ кои са бутоните, които използвам за вземане-отхвърляне и задействане в моята игра. Чувствайте се свободни да ги промените на каквито и да е клавиши, които смятате, че работят по -добре за вашата игра/контролер.
След това накрая казваме на arduino да спре проверката, която Keyboard.end
Стъпка 8: Кодиране на движението в единство:
Първо нека ви кажа, че правя това за 2d игра, така че
примерите, които ще видите, са създадени за това. Основно означава, че когато използвам vector2, ако работите в 3d, ще използвате vector3. защото трябва да се притеснявате за допълнителното измерение на движението в 3d.
Сега причината да използвам емулация на клавиатура от страна на arduino е, че Unity има нещо вградено, за да разпознава клавишите на клавиатурата, които можем да използваме.
Ако отворите проекта си в единство, отидете на Редактиране -> Настройки на проекта -> Въвеждане. Можете да видите във вашия инспектор, че зарежда мениджъра за въвеждане. Където, ако кликнете върху Axes, можете да видите, че се отварят цял куп входни имена, които обикновено се използват за компютърни контролери, като тези, които правим сега. Двата входа, които ще използваме, са хоризонтални и вертикални, които проверяват за вас, познахте W-A-S-D.
Първо искате да направите обект във вашата йерархия на сцени на единство, който ще бъде вашият играч. В моя случай това е забавно малко момче. Това може да бъде всичко, от което се нуждаете, но за целта на моята игра направих този човек.
Стъпка 9:
Искате да дадете на този играч 2 неща. Кутиен колайдер 2d и
a Rigidbody 2d и ги редактирайте така, че да са като изображението по -горе.
Стъпка 10:
След това искате да отидете в папката с проекти и да създадете
C# скрипт. Което нарекох PlayerMovement.
В този скрипт ще дефинирате 2 променливи. Публично плаване, което наричам moveSpeed. Това ще определи колко бързо ще се движите. И частен Rigidbody2D, който наричам RigidPlayer. Което ще търси вашите играчи rigidbody.
Не забравяйте да отидете в редактора на единството, щракнете върху плейъра си, добавете този нов скрипт, като го плъзнете към инспектора и зададете числова стойност за moveSpeed.
Стъпка 11:
сега във вашия Start () искате да направите едно нещо и това е да
уверете се, че вашият RigidPlayer може да намери вашия платец rigidbody 2d. Правите това със следния ред код:
Стъпка 12:
След това преминаваме към update (). Ето къде отиваме
за да накарате играча да се движи.
ние правим това с доста проста операция if, която ще разглежда отрицателните и положителните ключове от хоризонталната (AD) и вертикалната (SW) и ще я приложим като число, за да принудим да поставим нашето твърдо тяло 2d, за да вкараме играча си посока. Това число ще бъде умножено по променливата moveSpeed.
Стъпка 13:
И накрая, искате да сте сигурни, че вашият плейър спира да се движи, когато
нищо не натискаш Това харесваш така:
Сега, ако искате да използвате вашите 3 други бутона за всичко, което правите с това, ако:: (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, буфер, byteLimit);
И инструкциите if ще гарантират, че определени светлини се включват, когато единството подаде сигнал. В този случай имам 4 различни цветни светлини, така че правя единство изпращане g за включване на зеления светодиод, b за включване на синия светодиод, r за включване на червения светодиод и y за включване на жълтия светодиод.
Стъпка 18: Кодиране на светлини Unity Side:
Оке първо 2 неща, преди да влезем в това.
1. във вашата програма за кодиране на arduino отидете на Инструмент -> Порт -> и ме проверете на кой COM е вашият uno. В моя случай неговият COM3 (това ще бъде важно в кода)
2. в единство Отидете на Редактиране -> Настройки на проекта -> Плейър, след което в инспектора щракнете върху други настройки, отидете на Ниво на съвместимост на Api и го превключете от подмрежа. NET 2.0 към само. NET 2.0
Окей, това е направено. Да влезем в него.
Щракнете с десния бутон върху вашата йерархия и щракнете върху Създай празно.
Това ще бъде празен игрален обект, който просто ще съществува във вашата игра, за да държи един скрипт за нас. Нарекох този обект Init.
Стъпка 19:
След това отидете в раздела вашите проекти и създайте нов C# скрипт
и го наречете Изпращане.
Първото нещо, което правите, е да напишете това в редове в използващите раздели на вашия код:
използване на System. IO. Ports;
използване на System. Threading;
това го прави така, че можем да използваме променливата SerialPort
Стъпка 20:
в този скрипт ще направим следните променливи. Сега имайте предвид, че имам COM3 там, това може да е различно за вас, както обсъждахме в началото на тази стъпка. Ако е заменено на 3 с номера, който е казал за вас.
Стъпка 21:
В началото казваме на скрипта да използва OpenConnection
функция, която ще напишем след малко
актуализацията е по -скоро тест, отколкото всичко, но ако искате да я включите, тя ще тества съобщенията, изпращани до единство. Можете да го игнорирате честно.
Стъпка 22:
Добре сега за тази функция OpenConnection. Това е просто голям
ако/else изявление, което поддържа връзката отворена, просто я копирайте като написано и трябва да сте добре.
Стъпка 23:
Сега помнете от кода arduino, за който го направих да провери
сигнализира, че единството ще го изпрати.
ами това е мястото, където се случва. В моя случай имам закачени 4 светлини, затова написах 4 функции, които са изключително прости. Всичко, което правят, е, когато са повикани, изпращат писмо до arduino. Когато arduino получи тази буква, тя светва светлината, съответстваща на тази буква.
Стъпка 24:
Може би се чудите как да го накарам да нарече това
функция? Е, правите го с един прост ред във всеки от другите си скриптове на C#, които използвате за вашата игра. Изпращане. NameFunctionтук ();. Така например в моята игра играчът има задача да събере 4 цветни кълба. Затова написах малък скрипт, който гарантира, че когато се доближи до един и натисне десния бутон, той го вдига и той изпраща сигнала до arduino, че в този случай Жълтото кълбо е взето. За да знае, добре, трябва да включа жълтия светодиод:
Можете да поставите този ред код навсякъде, където желаете. Ако искате да светне, когато играта започне, поставете го в стартовата функция. Искате да светне, когато умре, поставете го във вашата функция за смъртта на играчите. Експериментирайте малко наоколо. Избирам да направя светлините нещо като потребителски елемент извън играта, за да следя кълбите, които трябва да съберете, без да затрупвате екрана.
Препоръчано:
Arduino Game Controller + Unity Game: 5 стъпки
Arduino Game Controller + Unity Game: В тази инструкция ще ви покажа как да изградите/програмирате контролер за игри arduino, който може да се свърже с единство
Интерактивни светлини за двора, светлини за пътеки: 3 стъпки
Интерактивни светлини за двора, светлини за пътеки: Исках да построя някакъв вид интерактивни дворни светлини за задния си двор. Идеята беше, че когато някой вървеше в една посока, това щеше да предизвика анимация в посоката, в която вървите. Започнах със Dollar General $ 1.00 слънчеви светлини
Сандък със съкровище Zelda (със светлини и звук): 12 стъпки (със снимки)
Zelda Treasure Chest (With Lights & Sound): Здравейте на всички! Бях голям фен на игрите Legend of Zelda, когато бях по -малък, но мисля, че почти всеки знае емблематичната мелодия, която свири, когато отворите сандък в играта, просто звучи толкова вълшебно! В тази инструкция ще ви покажа как
LED светлини за тъмни светлини: 7 стъпки
LED светлини за тъмни светлини: Светодиодът светва не само при подаване на захранване, но и генерира малко напрежение, когато се прилага светлина. Микроконтролер PICAXE може да се използва за наблюдение на това напрежение. Ще ви покажа как да направите електронна свещ, която да трепти светодиод, когато
Направи си сам коледни светлини - Хореографирани къщи светлини: 15 стъпки (със снимки)
Коледни лампички „Направи си сам“- Хореографирани светлини за къща: Коледа „Направи си сам“- Коледа, осветени за къща. Това НЕ е начинаещ „Направи си сам“. Ще ви трябва твърдо разбиране по електроника, верига, ОСНОВНО програмиране и общи познания за електрическата безопасност. Това DIY е за опитен човек, така че