Obsah:

Herný ovládač Arduino so svetlami reagujúcimi na vašu hru Unity :: 24 krokov
Herný ovládač Arduino so svetlami reagujúcimi na vašu hru Unity :: 24 krokov

Video: Herný ovládač Arduino so svetlami reagujúcimi na vašu hru Unity :: 24 krokov

Video: Herný ovládač Arduino so svetlami reagujúcimi na vašu hru Unity :: 24 krokov
Video: RGB LED Controller #shorts #diy #electronic #arduino 2024, November
Anonim
Herný ovládač Arduino so svetlami reagujúcimi na vašu hru Unity
Herný ovládač Arduino so svetlami reagujúcimi na vašu hru Unity

Najprv som to napísal slovom. Toto je prvýkrát, čo používam instructable, takže vždy, keď poviem: napíšte kód tak, aby ste vedeli, že odkazujem na obrázok v hornej časti tohto kroku.

V tomto projekte používam 2 arduino na spustenie 2 oddelených bitov kódu, pretože som mal problémy s jeho fungovaním iba s jedným.

Toto sú Uno a Leonardo

Celkovo je to to, čo budete potrebovať na podporu tohto projektu.

· 7 tlačidiel

· 23 prepojovacích káblov

· 1 kábel arduino Leonardo + USB

· 4 odpory · 4 LED diódy

· 1 arduino uno + USB kábel

· 2 breadboardy

Krok 1: Pripojenie ovládacích tlačidiel k Arduinu

Pripojenie ovládacích tlačidiel k Arduinu
Pripojenie ovládacích tlačidiel k Arduinu

Čo budete potrebovať na pripojenie tejto časti:

· 7 tlačidiel

· 14 prepojovacích káblov

· 1 kábel arduino Leonardo + USB

· Breadboard

Pripojenie tlačidiel je veľmi jednoduché, ale môže sa z nich rýchlo stať neporiadok, ktorý sa zobrazí vo forme obrázku.

· Ako prvé umiestnite tlačidlá do polôh, ktoré som označil na obrázku vyššie.

· Po druhé, chcete prepojiť prepojku zo zemného otvoru na arduino Leonardo do mínusového radu nepájivého poľa.

· Teraz prepojte prepojky odkiaľkoľvek z mínusového radu do radu, ktorý je v súlade s pravým kolíkom vášho tlačidla. to mu dodá silu.

· Ďalej chcete zapojiť prepojovací kábel z radu, ktorý je v súlade s ľavým kolíkom vášho tlačidla, do digitálnych vstupných slotov Leonarda. Na tlačidlá som použil slot 2 - 3 - 4 - 5 - 6 - 7- 8

Ukázal som iba drôt, ktorý ide na vstup 8 na obrázku, pretože sa stáva veľmi chaotickým obrázkom, ktorý vám ukáže všetky drôty, ktoré sa navzájom krížia.

Krok 2: Kódovanie Arduina Leonardo:

Kódovanie Arduina Leonardo
Kódovanie Arduina Leonardo

Aby som vám povedal dôvod, prečo na to používam Leonardo. Je to preto, že má určitý čip, ktorý Uno nemá, vďaka ktorému ho počítač rozpozná ako vstupné zariadenie USB. Podobne ako klávesnica. To nám umožňuje urobiť niečo, čo nám ako programátorom tohto projektu robí sakra veľa jednoduchších. Emulácia klávesnice. Oklameme počítač, aby si myslel, že stlačíme určité klávesy na klávesnici, zatiaľ čo v skutočnosti stlačíme tlačidlá na našom ovládači.

Teraz vás prevediem tým, že ste si krok za krokom mysleli kód.

Najprv úplne hore zahrnujeme klávesnicu.h. To nám umožní používať funkcie klávesnice, ktoré použijeme v našom kóde.

Krok 3:

Obrázok
Obrázok

Potom musíme definovať digitálne vstupné sloty, ktoré použijeme na

Leonardo pre každé tlačidlo.

Tiež som každého z nich pomenoval podľa kľúča, ktorý budem napodobňovať.

Krok 4:

Obrázok
Obrázok

Odtiaľ sa dostaneme do funkcie nastavenia. Toto hovorí

arduino, čo to robí pri štarte.

Najprv napíšeme Serial.begin, ktorý otvorí sériový port a nastaví rýchlosť prenosu dát na 9600 bps

a definujeme, že všetky sú pomenované piny ako vstupy.

Krok 5:

Obrázok
Obrázok

A nakoniec napíšeme našu funkciu slučky, ktorá skontroluje, či

stláčajú sa tlačidlá a povedia arduinovi, ako na to reagovať.

Najprv napíšeme Keyboard.begin, ktorý arduinovi povie, že sa o nás musí starať pomocou funkcií klávesnice

Krok 6:

Obrázok
Obrázok
Obrázok
Obrázok
Obrázok
Obrázok

Potom pre každé tlačidlo napíšeme príkaz if/else, ktorý vyzerá takto

Čo som tu povedal arduino, je: Ak je na ovládači stlačené moje ľavé tlačidlo, počítač si myslí, že stlačíme kláves „a“, a ak to tak nie je, nech si myslí, že sme kľúč pustili.

Tento blok kódu v podstate opakujete pre každé tlačidlo na ovládači. so zmenami pre každú premennú a kľúče, ktoré musí premenná emulovať

Krok 7:

Obrázok
Obrázok

Klávesy, ktorým sme povedali, aby počítač zasiahol, sú W - A - S - D

sú do značnej miery štandardom pre pohyb v počítačových hrách a E-Q-a medzerníkom, ktorý je v tomto kóde rozpoznaný ako „“, čo sú tlačidlá, ktoré používam na vyzdvihnutie-zrušenie a spustenie hry. Nebojte sa ich zmeniť na akékoľvek klávesy, o ktorých sa domnievate, že fungujú lepšie pre vašu hru/ovládač.

Potom nakoniec povieme arduino, aby zastavil kontrolu, ktorá Keyboard.end

Krok 8: Kódovanie pohybu v jednote:

Kódovanie pohybu v jednote
Kódovanie pohybu v jednote

Najprv vám poviem, že to robím pre 2D hru

príklady, ktoré uvidíte, sú na to stavané. Hlavne to znamená, že kde používam vector2, ak pracujete v 3d, budete používať vector3. pretože by ste sa museli starať o ďalší rozmer pohybu v 3D.

Dôvod, prečo som použil emuláciu klávesnice na strane arduino, je ten, že Unity má niečo zabudované na rozpoznanie klávesov na klávesnici, ktoré môžeme použiť.

Ak projekt otvoríte v jednote, prejdite na položku Upraviť -> Nastavenia projektu -> Vstup. Na svojom inšpektorovi vidíte, že naštartuje správcu vstupu. Kde keď kliknete na osi, uvidíte, ako sa otvorí veľa vstupných mien, ktoré sa bežne používajú pre počítačové ovládače, ako tie, ktoré teraz vyrábame. Dva vstupy, ktoré použijeme, sú horizontálne a vertikálne, ktoré ste skontrolovali, či ste to uhádli W-A-S-D.

Najprv chcete vytvoriť predmet V hierarchii scén vašej jednoty, ktorou bude váš hráč. V mojom prípade je to zábavný malý chlapec. To môže byť čokoľvek, čo potrebujete, aby to bolo, ale na účely svojej hry som urobil tohto chlapa.

Krok 9:

Obrázok
Obrázok

Chcete dať tomuto hráčovi 2 veci. Krabicový urýchľovač 2d a

Rigidbody 2d a upravte ich tak, aby boli ako na obrázku vyššie.

Krok 10:

Obrázok
Obrázok

Potom chcete prejsť do priečinka s projektmi a vytvoriť súbor

C# skript. Ktorý som pomenoval PlayerMovement.

V tomto skripte definujete 2 premenné. Verejný plavák, ktorý nazývam moveSpeed. To určí, ako rýchlo pôjdete. A súkromný Rigidbody2D, ktorému hovorím RigidPlayer. Ktorý bude hľadať rigidbody vašich hráčov.

Nezabudnite sa dostať do svojho editora jednoty, kliknite na svoj prehrávač, pridajte tento nový skript jeho pretiahnutím do inšpektora a nastavte číselnú hodnotu pre moveSpeed.

Krok 11:

Obrázok
Obrázok

teraz vo svojom štarte () chcete urobiť jednu vec a to je

uistite sa, že váš RigidPlayer dokáže nájsť platiteľa rigidbody 2d. Urobíte to pomocou nasledujúceho riadku kódu:

Krok 12:

Obrázok
Obrázok

Potom prejdeme k aktualizácii (). Tu sa chystáme

aby sa hráč rozhýbal.

robíme to celkom jednoduchým príkazom if, ktorý sa zameria na negatívne a pozitívne kľúče z horizontálnych (AD) a vertikálnych (SW) a použijeme to ako číslo, aby sme vynútili nasadenie nášho pevného tela 2d, aby sme zatlačili nášho hráča smer. Toto číslo sa vynásobí premennou moveSpeed.

Krok 13:

Obrázok
Obrázok

Nakoniec sa chcete uistiť, že sa váš prehrávač zastaví, keď

nič nestlačíte. Toto sa vám páči takto:

Teraz, ak chcete použiť ďalšie tri tlačidlá na čokoľvek, urobte to pomocou príkazu if: if (Input. GetKeyDown (Keycode. Space))

pre medzerník a namiesto medzery vložte písmeno ostatných klávesov, ktoré ste sa rozhodli použiť pre ostatné klávesy.

Krok 14: Pripojenie svetiel k Arduinu

Pripojenie svetiel k Arduinu
Pripojenie svetiel k Arduinu

·

Čo budete potrebovať na pripojenie tejto časti:

· 9 prepojovacích káblov

· 4 odpory

· 4 LED diódy

· 1 arduino uno + USB kábel

· Breadboard

Pripojenie svetiel sa vykoná cez Uno.

Nakoniec to bude vyzerať takto na obrázku vyššie:

Rezistory zapojíte na dlhú stranu diód LED. Potom zapojte prepojku z digitálneho čísla PIN na uno do rezistorov. v tomto prípade som použil digitálne vývody 9 -10 -11 -12, tieto čísla budú relevantné, keď sa dostaneme ku kódu pre svetlá.

Odtiaľ chcete zapojiť prepojku zo zemného otvoru na vašom arduino Uno na miesto na vašej doske, ako je vidieť na čiernom drôte na obrázku vyššie.

Potom chcete, aby všetky 4 prepojky viedli na kratší koniec každej diódy LED

Krok 15: Kódovanie Arduino Uno

Kódovanie Arduino Uno
Kódovanie Arduino Uno

Dobre, najskôr si definujeme naše premenné

Najprv teda aké digitálne vstupy používame pre naše svetlá. A vyrobíme znak s názvom myCol [20]

Krok 16:

Obrázok
Obrázok

Potom v nastavení chceme urobiť znova Serial.begin. Zapnite všetky naše diódy LED a vypnite ich pri spustení.

Krok 17:

Obrázok
Obrázok

A nakoniec chcete napísať svoju funkciu slučky.

To spôsobí, že Arduino bude čítať všetky údaje prichádzajúce cez sériové číslo, kým sa nestane jedna z dvoch udalostí. Buď je detekovaný znak posunu riadka; toto je označené lf, ktoré je nastavené na 10 a je prvým argumentom alebo bolo načítané určité množstvo bajtov. Toto je tretí argument a pre tento príklad je nastavený iba na jeden bajt. Dáta sú uložené v premennej myCol, ktorá je nastavená na char a limit 20. V readBytesUtil je to druhý argument. Alebo iným spôsobom, ako to vysvetliť, je Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

A ak príkazy if zaistia, aby sa určité svetlá rozsvietili, keď jednota dá signál. V tomto prípade mám 4 rôzne farebné svetlá, takže jednotu pošlem g, aby sa rozsvietila zelená LED, b aby sa rozsvietila modrá LED, r aby sa rozsvietila červená LED a y, aby sa rozsvietila žltá LED.

Krok 18: Stránka jednoty kódovania svetiel:

Strana jednoty kódovacích svetiel
Strana jednoty kódovacích svetiel

Dobre si dajte 2 veci, než sa do toho pustíme.

1. Vo svojom kódovacom programe arduino choďte na Tool -> Port -> a skontrolujte mi, na ktorom COM je vaše uno zapnuté. V mojom prípade je to COM3 (to bude dôležité v kóde)

2. v jednote Prejdite na Upraviť -> Nastavenia projektu -> Hráč a potom v inšpektorovi kliknite na ďalšie nastavenia, prejdite na úroveň kompatibility Api a prepnite ju z podsiete. NET 2.0 na. NET 2.0

Dobre, to je hotové. Poďme do toho.

Kliknite pravým tlačidlom myši na svoju hierarchiu a kliknite na položku Vytvoriť prázdne.

Toto bude prázdny herný objekt, ktorý bude vo vašej hre existovať a bude obsahovať jeden skript pre nás. Tento objekt som nazval Init.

Krok 19:

Obrázok
Obrázok

Potom prejdite na kartu svojich projektov a vytvorte nový skript C#

a nazvite to Odosielanie.

Prvá vec, ktorú urobíte, je napísať ich do riadkov v častiach kódu, ktoré používate:

pomocou System. IO. Ports;

pomocou System. Threading;

Vďaka tomu môžeme používať premennú SerialPort

Krok 20:

Obrázok
Obrázok

v tomto skripte urobíme nasledujúce premenné. Teraz si všimnite, že tam mám COM3, to môže byť pre vás iné, ako sme diskutovali na začiatku tohto kroku. Ak je nahradený číslom 3 číslom, ktoré pre vás bolo uvedené.

Krok 21:

Obrázok
Obrázok

Na začiatku povieme skriptu, ktorý má použiť, OpenConnection

funkciu, ktorú si trochu napíšeme

aktualizácia je viac ako test, ale ak ju chcete zahrnúť, testuje správy odosielané do jednoty. Môžete to úprimne ignorovať.

Krok 22:

Obrázok
Obrázok

Teraz sa pokochajte touto funkciou OpenConnection. Toto je jednoducho veľké

if/else vyhlásenie, ktoré udržuje pripojenie otvorené, skopírujte ho tak, ako je napísané, a mali by ste byť v poriadku.

Krok 23:

Obrázok
Obrázok

Teraz si zapamätajte z kódu arduina, pre ktorý som ho skontroloval

signály, ktoré k tomu pošle jednota.

no a tu sa to stáva. V mojom prípade som zapojil 4 svetlá, takže som napísal 4 funkcie, ktoré sú veľmi jednoduché. Jediné, čo robia, je, že keď ich zavolajú, pošlú list arduino. Keď arduino dostane toto písmeno, rozsvieti sa svetlo zodpovedajúce uvedenému písmenu.

Krok 24:

Obrázok
Obrázok

Možno sa pýtate, ako to môžem nazvať tak

fungovať? Urobíte to pomocou jedného jednoduchého riadku v ľubovoľnom inom skripte C#, ktoré vo svojej hre používate. Sending. NameFunctionhere ();. Napríklad v mojej hre má hráč za úlohu zozbierať 4 farebné gule. Napísal som teda malý skript, ktorý zaistí, že keď sa k jednému priblíži a stlačí pravé tlačidlo, zdvihne ho a vyšle signál arduinovi, že v tomto prípade bola žltá guľa vyzdvihnutá. Aby to vedel, musím zapnúť žltú diódu:

Tento jeden riadok kódu môžete vložiť kdekoľvek chcete. Ak chcete, aby sa hra po spustení rozsvietila, dajte ju do štartovacej funkcie. Chcete, aby sa rozsvietilo, keď zomrie, dajte to do svojej funkcie pre smrť hráčov. Trochu experimentujte. Rozhodol som sa urobiť zo svetiel akýsi prvok používateľského rozhrania mimo hry, aby som sledoval gule, ktoré musíte zbierať, bez toho, aby ste zapratali obrazovku.

Odporúča: