Sisällysluettelo:

Arduino -peliohjain, jonka valot reagoivat Unity -peliin :: 24 vaihetta
Arduino -peliohjain, jonka valot reagoivat Unity -peliin :: 24 vaihetta

Video: Arduino -peliohjain, jonka valot reagoivat Unity -peliin :: 24 vaihetta

Video: Arduino -peliohjain, jonka valot reagoivat Unity -peliin :: 24 vaihetta
Video: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Joulukuu
Anonim
Arduino -peliohjain, jonka valot vastaavat Unity -peliin
Arduino -peliohjain, jonka valot vastaavat Unity -peliin

Aluksi kirjoitin tämän sanalla. Tämä on ensimmäinen kerta, kun käytän ohjattavaa, joten aina kun sanon: kirjoita koodi ulos niin, että tiedät, että viittaan vaiheen yläreunassa olevaan kuvaan.

Tässä projektissa käytän 2 arduinoa kahden erillisen koodibitin suorittamiseen, koska minulla oli vaikeuksia saada se toimimaan vain yhden kanssa

Nämä ovat Uno ja Leonardo

kaiken kaikkiaan tämä on mitä tarvitset tämän projektin leipälevylle.

· 7 painonappia

· 23 hyppyjohtoa

· 1 arduino Leonardo + USB -kaapeli

· 4 vastusta · 4 lediä

· 1 arduino uno + USB -kaapeli

· 2 leipälautaa

Vaihe 1: Ohjauspainikkeiden liittäminen Arduinoon

Ohjauspainikkeiden liittäminen Arduinoon
Ohjauspainikkeiden liittäminen Arduinoon

Tarvitset tämän osan liittämiseen:

· 7 painonappia

· 14 hyppyjohtoa

· 1 arduino Leonardo + USB -kaapeli

· Leipälauta

Painikkeet ovat melko yksinkertaisia kytkeä, mutta ne voivat nopeasti muuttua sotkuksi näytettäväksi kuvamuodossa.

· Aseta ensin painikkeet edellä kuvaan merkittyihin kohtiin.

· Toiseksi haluat kytkeä puseron arduino Leonardon maadoituspaikasta leipälevyn miinusriville.

· Nyt kytket puserot minne tahansa miinusriviltä riville, joka on painikkeen oikean nastan linjalla. tämä syöttää siihen voimaa.

· Seuraavaksi haluat kytkeä hyppyjohdon rivistä, joka on painonapin vasemman tapin linjassa Leonardon digitaalisiin tulopaikkoihin. Tässä painikkeissa käytin rakoja 2 - 3 - 4 - 5 - 6 - 7-8

Näytin vain johdon, joka menee tuloon 8 kuvassa, koska siitä tulee erittäin sotkuinen kuva näyttää kaikki johdot, jotka ylittävät toisensa.

Vaihe 2: Arduino Leonardon koodaus:

Arduino Leonardon koodaus
Arduino Leonardon koodaus

Joten kerron teille syyn, miksi käytän Leonardoa tähän. Koska Unossa ei ole tiettyä sirua, se saa tietokoneen tunnistamaan sen USB -syöttölaitteena. Aivan kuin se olisi näppäimistö. Tämä antaa meille mahdollisuuden tehdä jotain, joka tekee elämästämme tämän projektin ohjelmoijina helvetin paljon helpommaksi. Näppäimistön emulointi. Huijaamme tietokoneen ajattelemaan, että painamme tiettyjä näppäimistön näppäimiä, kun itse asiassa painamme ohjaimen painikkeita.

Nyt aion kävellä ajattelit koodia askel askeleelta.

Aluksi ylhäällä on Keyboard.h. Näin voimme käyttää näppäimistötoimintoja, joita aiomme käyttää koodissamme.

Vaihe 3:

Kuva
Kuva

Sitten meidän on määritettävä digitaaliset tulopaikat, joita aiomme käyttää

Leonardo jokaiselle painikkeelle.

Olen myös nimittänyt heistä jokaisen sen avaimen mukaan, jota aion jäljitellä.

Vaihe 4:

Kuva
Kuva

Sieltä pääsemme asetustoimintoon. Tämä kertoo

arduino mitä se tekee käynnistyksen yhteydessä.

ensin kirjoitamme Serial.begin, joka avaa sarjaportin ja asettaa tiedonsiirtonopeudeksi 9600 bps

ja määritämme kaikki nimetyt nastat tuloiksi.

Vaihe 5:

Kuva
Kuva

Ja lopuksi kirjoitamme silmukkafunktion, joka tarkistaa, onko

painikkeita painetaan ja kerro arduinolle, miten reagoida siihen.

Kirjoitamme ensin Keyboard.begin, joka kertoo arduinolle, että hänen täytyy varoa meitä näppäimistötoimintojen avulla

Vaihe 6:

Kuva
Kuva
Kuva
Kuva
Kuva
Kuva

Sitten kirjoitamme jokaiselle painikkeelle if/else -lausekkeen, joka menee näin

Joten sanoin arduinolle tässä: Jos vasenta painiketta painan ohjaimessa, saa tietokone ajattelemaan, että painamme "a" -näppäintä, ja jos näin ei ole, anna sen ajatella, että olemme päästäneet avaimesta irti.

Toistat periaatteessa tämän koodilohkon jokaiselle ohjaimen painikkeelle. muutoksilla jokaiselle muuttujalle ja avaimille, joita muuttujan täytyy jäljitellä

Vaihe 7:

Kuva
Kuva

Avaimet, jotka kerroimme tietokoneelle osuvan tänne, ovat W - A - S - D joita

ovat pitkälti PC-pelien ja E-Q: n liikkeen standardi ja välilyönti, joka tässä koodissa tunnistetaan "" ja joita painikkeita käytän noutaessani-hylkää ja laukaise pelini. Voit vapaasti vaihtaa ne mihin tahansa näppäimeen, joka mielestäsi toimii paremmin pelissäsi/ohjaimessasi.

Sitten lopuksi kehotamme arduinoa lopettamaan tarkistuksen, joka Keyboard.end

Vaihe 8: Liikkeen koodaaminen yhtenäisyydessä:

Koodausliike yhtenäisyydessä
Koodausliike yhtenäisyydessä

Kerron aluksi, että teen tämän 2d -pelille

esimerkit, joita aiot nähdä, on rakennettu sitä varten. Pääasiassa se, missä käytän vektoria2, jos työskentelet kolmiulotteisena, käytät vektori3: ta. koska sinun pitäisi huolehtia siitä, että olen ylimääräinen ulottuvuus liikkeessä 3D: ssä.

Nyt syy, miksi käytin näppäimistöemulointia arduino -puolella, johtuu siitä, että Unityllä on jotain sisäänrakennettua tunnistamaan näppäimistön näppäimet, joita voimme käyttää.

Jos avaat projektisi yhtenäisesti, valitse Muokkaa -> Projektiasetukset -> Syöttö. Näet tarkastajasta, että se käynnistää syöttöhallinnan. Missä jos napsautat akseleita, näet koko joukon syöttönimiä, joita yleensä käytetään PC -ohjaimiin, kuten nyt tekemiimme. Kaksi tuloa, joita aiomme käyttää, ovat vaaka- ja pystysuorat, jotka tarkistavat, että arvasit sen W-A-S-D.

Ensin haluat tehdä objektin yhtenäisyysnäkymiesi hierarkiassa, joka on soittimesi. Minun tapauksessani tämä on hauska pikkumies. Tämä voi olla mitä tarvitsetkin, mutta peliäni varten tein tämän kaverin.

Vaihe 9:

Kuva
Kuva

Haluat antaa tälle pelaajalle 2 asiaa. Laatikon törmääjä 2d ja

a Rigidbody 2d ja muokkaa niitä yllä olevan kuvan kaltaisiksi.

Vaihe 10:

Kuva
Kuva

Sitten haluat mennä projektikansioon ja luoda

C# -kirjoitus. Nimitin PlayerMovementiksi.

Tässä skriptissä määrität 2 muuttujaa. Julkinen kellunta, jota kutsun moveSpeediksi. Joka määrittää kuinka nopeasti menet. Ja yksityinen Rigidbody2D, jota kutsun RigidPlayeriksi. Joka etsii pelaajasi jäykältä.

Älä unohda päästä yhtenäisyyseditoriin napsauttamalla soitinta ja lisää tämä uusi komentosarja vetämällä se tarkastajalle ja määrittämällä MovSpeed -numeroarvo.

Vaihe 11:

Kuva
Kuva

nyt Startissa () haluat tehdä yhden asian ja se on

varmista, että RigidPlayer löytää maksajan rigidbody 2d. Voit tehdä sen seuraavalla koodirivillä:

Vaihe 12:

Kuva
Kuva

Sitten siirrytään päivitykseen (). Tässä olemme menossa

saadakseen pelaajan liikkumaan.

teemme sen melko yksinkertaisella if -lausunnolla, jossa tarkastellaan horisontaalisen (AD) ja pystysuoran (SW) negatiivisia ja positiivisia avaimia ja sovelletaan sitä pakottaaksemme numeron, jonka päälle asetamme jäykän kehomme 2d työntääksemme pelaajamme sisään suunta. Tämä luku kerrotaan movSpeed -muuttujalla.

Vaihe 13:

Kuva
Kuva

Lopuksi haluat varmistaa, että soitin lakkaa liikkumasta milloin tahansa

et paina mitään. Tästä pidät näin:

Nyt jos haluat käyttää kolmea muuta painiketta mihin tahansa, jos käytät tätä if -lausetta: if (Input. GetKeyDown (Keycode. Space))

välilyöntiä varten ja kirjoita välilyönnin sijaan muiden näppäinten valitsemasi kirjaimet.

Vaihe 14: Valojen kytkeminen Arduinolle

Valojen kytkeminen Arduinolle
Valojen kytkeminen Arduinolle

·

Tarvitset tämän osan liittämiseen:

· 9 hyppyjohtoa

· 4 vastusta

· 4 lediä

· 1 arduino uno + USB -kaapeli

· Leipälauta

Valojen kytkentä tehdään Unon kautta.

Lopulta se näyttää tältä kuvalta:

Kytket vastukset LED -valojen pitkälle puolelle. Ja sitten kytket hyppyjohtimen unon digitaalisesta pin -numerosta vastuksiin. Tässä tapauksessa käytin digitaalisia nastapaikkoja 9-10-11-12, nämä numerot ovat merkityksellisiä, kun pääsemme valojen koodiin.

Sieltä haluat kytkeä hyppääjän arduino Uno -laitteen maadoituspaikasta paikkaan, joka on laudallasi, kuten yllä olevan kuvan mustalla langalla.

Sitten haluat, että kaikki 4 hyppääjää johtavat kunkin LED -valon lyhyeen päähän

Vaihe 15: Arduino Unon koodaus

Arduino Unon koodaus
Arduino Unon koodaus

Okei, ensin määritämme muuttujamme uudelleen

Joten ensin mitä digitaalituloja käytämme valoihimme. Ja aiomme tehdä hiilen nimeltä myCol [20]

Vaihe 16:

Kuva
Kuva

Sitten asennuksessa haluamme tehdä Serial.binin uudelleen. Laita kaikki LED -valot ulostuloon ja sammuta ne kaikki käynnistyksen yhteydessä.

Vaihe 17:

Kuva
Kuva

Ja lopuksi haluat kirjoittaa silmukkafunktion.

Tämä saa Arduinon lukemaan kaikki sarjassa tulevat tiedot, kunnes yksi kahdesta tapahtumasta tapahtuu. Joko syötteen merkki havaitaan; tämä tunnistetaan numerolla lf, joka on asetettu 10: ksi ja on ensimmäinen argumentti tai tietty määrä tavuja on luettu sisään. Tämä on kolmas argumentti ja tässä esimerkissä on asetettu vain yksi tavu. Tiedot tallennetaan muuttujaan myCol, joka on asetettu char -arvoksi ja rajaksi 20. ReadBytesUllil asti tämä on toinen argumentti. Tai toinen tapa selittää se on Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Ja jos -lausunnot varmistavat, että tietyt valot syttyvät, kun yhtenäisyys antaa signaalin. Tässä tapauksessa sain 4 eriväristä valoa, joten annan yhtenäisyyden lähettää g, jotta vihreä LED syttyy, b sininen valo syttyy, r punainen LED syttyy ja y keltainen LED syttyy.

Vaihe 18: Valojen koodaus Unity Side:

Koodausvalot Unity Side
Koodausvalot Unity Side

Okei 2 asiaa ennen kuin ryhdymme tähän.

1. mene arduino -koodausohjelmassasi kohtaan Työkalu -> Portti -> ja tarkista minulle, mikä COM -laitteesi on käytössä. Minun tapauksessani sen COM3 (tämä on tärkeä koodissa)

2. Yhteydessä Siirry kohtaan Muokkaa -> Projektiasetukset -> Pelaaja ja napsauta sitten tarkastajassa muita asetuksia, siirry Api -yhteensopivuustasolle ja vaihda se. NET 2.0 -aliverkosta vain. NET 2.0: ksi

Okei se on tehty. Mennään siihen.

Napsauta hiiren kakkospainikkeella hierarkiaa ja valitse Luo tyhjä.

Tämä on tyhjä peliobjekti, joka on vain pelissäsi ja joka sisältää yhden käsikirjoituksen meille. Olen kutsunut tätä kohdetta Initiksi.

Vaihe 19:

Kuva
Kuva

Siirry sitten projektisi -välilehteen ja luo uusi C# -skripti

ja kutsua sitä Lähetys.

Ensimmäinen asia, jonka teet, on kirjoittaa nämä rivit koodisi käyttämiin osioihin:

käyttämällä System. IO. Portsia;

käyttämällä System. Threading;

tämä tekee siitä niin, että voimme käyttää SerialPort -muuttujaa

Vaihe 20:

Kuva
Kuva

tässä skriptissä aiomme tehdä seuraavat muuttujat. Huomaa nyt, että minulla on COM3 siellä, tämä saattaa olla erilainen sinulle, kuten keskustelimme tämän vaiheen alussa. Jos se on, korvaa 3 numerolla, jonka se sanoi sinulle.

Vaihe 21:

Kuva
Kuva

Kerromme alussa, että käytettävä skripti on OpenConnection

funktio, jonka kirjoitamme vähän

päivitys on enemmän testi kuin mitä tahansa, mutta jos haluat sisällyttää sen, se testataan unitylle lähetettäviä viestejä. Voisit sivuuttaa sen rehellisesti.

Vaihe 22:

Kuva
Kuva

Okei nyt tämä OpenConnection -toiminto. Tämä on vain iso

jos/muu -lausunto, joka pitää yhteyden auki, kopioi se kuten kirjoitettu ja sinun pitäisi olla kunnossa.

Vaihe 23:

Kuva
Kuva

Muista nyt arduino -koodista, jonka sain tarkistettua

osoittaa, että yhtenäisyys lähettää sille.

no tässä se tapahtuu. Minun tapauksessani sain 4 valoa kytkettyä, joten kirjoitin 4 toimintoa, jotka ovat erittäin yksinkertaisia. Kaikki he tekevät, kun heidät kutsutaan, he lähettävät kirjeen arduinoon. Kun arduino saa kyseisen kirjaimen, se syttyy kyseistä kirjainta vastaavaa valoa.

Vaihe 24:

Kuva
Kuva

Saatat ihmetellä, miten saan sen kutsumaan tätä

toiminto? No, teet sen yhdellä yksinkertaisella rivillä missä tahansa muussa pelissäsi käyttävässä c# -skriptissä. Lähetetään. NimiToiminto täällä ();. Joten esimerkiksi pelissäni pelaajan tehtävänä on kerätä 4 värillistä palloa. Joten kirjoitin pienen käsikirjoituksen, joka varmistaa, että kun hän pääsee lähelle yhtä ja painaa oikeaa painiketta, hän ottaa sen ylös ja se lähettää signaalin arduinoon, että tässä tapauksessa keltainen pallo on otettu. Jotta se tietää, okei, minun on kytkettävä keltainen LED -valo päälle:

Voit laittaa tämän yhden koodirivin minne haluat. Jos haluat sen syttyvän pelin alkaessa, laita se käynnistystoimintoon. Haluatko sen syttyvän, kun hän kuolee, aseta se toimintoosi pelaajien kuoleman vuoksi. Kokeile vähän. Valitsen tehdä valoista eräänlaisen ui -elementin pelin ulkopuolella, jotta voin seurata kerättyjä palloja ilman, että näyttö sotkeutuu.

Suositeltava: