Kazalo:

Arduino krmilnik iger z lučmi, ki se odzivajo na vašo igro Unity :: 24 korakov
Arduino krmilnik iger z lučmi, ki se odzivajo na vašo igro Unity :: 24 korakov

Video: Arduino krmilnik iger z lučmi, ki se odzivajo na vašo igro Unity :: 24 korakov

Video: Arduino krmilnik iger z lučmi, ki se odzivajo na vašo igro Unity :: 24 korakov
Video: Krmilnik BLDC 2024, December
Anonim
Arduino krmilnik iger z lučmi, ki se odzivajo na vašo igro Unity
Arduino krmilnik iger z lučmi, ki se odzivajo na vašo igro Unity

Najprej sem to zapisal z besedo. To je prvič, da uporabljam navodila, zato vsakič, ko rečem: napišite kodo, tako da veste, da se sklicujem na sliko na vrhu tega koraka.

V tem projektu uporabljam 2 arduina za izvajanje dveh ločenih kodov, saj sem imel težave pri delovanju samo z enim

To sta Uno in Leonardo

vse to je tisto, kar potrebujete za pripravo tega projekta.

· 7 gumbov

· 23 mostičnih žic

· 1 kabel arduino Leonardo + USB

· 4 upori · 4 LED

· 1 kabel arduino uno + usb

· 2 plošči

1. korak: Priključitev nadzornih gumbov na Arduino

Priključitev nadzornih gumbov na Arduino
Priključitev nadzornih gumbov na Arduino

Kaj boste morali povezati s tem delom:

· 7 gumbov

· 14 mostičnih žic

· 1 kabel arduino Leonardo + USB

· Mizo

Gumbi so precej preprosti za priključitev, vendar lahko hitro postanejo zmešnjave za prikaz v obliki slike.

· Najprej postavite gumbe na položaje, ki sem jih označil na zgornji sliki.

· Drugič, želite priključiti skakalca iz talne reže na arduinu Leonardo v minus vrstico na plošči.

· Zdaj povežete skakalce od kjer koli v minus vrstici do vrstice, ki je v skladu z desnim zatičem gumba. to mu bo dalo moč.

· Nato želite povezati mostiček iz vrstice, ki je v skladu z levim zatičem vašega gumba, za Leonardove digitalne vhodne reže. Za gumbe sem uporabil režo 2 - 3 - 4 - 5 - 6 - 7- 8

Pokazal sem samo žico, ki gre na vhod 8 na sliki, ker postane zelo grda slika, ki prikazuje vse žice, ki se križajo.

2. korak: Kodiranje Arduino Leonarda:

Kodiranje Arduino Leonarda
Kodiranje Arduino Leonarda

Zato, da vam povem, zakaj za to uporabljam Leonarda. Ker Uno nima določenega čipa, ga računalnik prepozna kot vhodno napravo USB. Podobno kot tipkovnica. Kar nam omogoča, da naredimo nekaj, kar nam kot programerjem olajša življenje. Emulacija tipkovnice. Računalnik bomo zavedli, da pritiska na določene tipke na tipkovnici, medtem ko dejansko pritisnemo gumbe na krmilniku.

Zdaj bom hodil po korakih, ko ste pomislili na kodo.

Najprej vse do vrha vključimo Keyboard.h. To nam bo omogočilo uporabo funkcij tipkovnice, ki jih bomo uporabljali v naši kodi.

3. korak:

Slika
Slika

Nato moramo definirati reže za digitalni vhod, ki jih bomo uporabili na

Leonardo za vsak gumb.

Vsakega izmed njih sem poimenoval tudi po ključu, ki ga bom posnemal.

4. korak:

Slika
Slika

Od tam preidemo v nastavitveno funkcijo. To pove

arduino, kaj počne ob zagonu.

najprej napišemo Serial.begin, ki bo odprl serijska vrata in nastavil hitrost prenosa podatkov na 9600 bps

in definiramo, da so vsi imenovani zatiči vhodi.

5. korak:

Slika
Slika

In na koncu napišemo našo funkcijo zanke, ki bo preverila, če

pritisnete gumbe in povejte arduinu, kako se na to odzvati.

Najprej napišemo Keyboard.begin, ki bo arduinu povedal, da mora paziti na nas s funkcijami tipkovnice

6. korak:

Slika
Slika
Slika
Slika
Slika
Slika

Nato za vsak gumb napišemo stavek if/else, ki gre takole

Torej, kar sem povedal arduinu tukaj: Če pritisnem levo tipko na krmilniku, naj računalnik misli, da pritiskamo tipko "a", in če temu ni tako, naj pomisli, da smo tipko izpustili.

Ta blok kode v bistvu ponovite za vsak gumb na krmilniku. s spremembami za vsako spremenljivko in ključi, ki jih mora spremenljivka posnemati

7. korak:

Slika
Slika

Ključi, ki smo jih povedali računalniku, da pritisnejo tukaj, so W - A - S - D, ki

so precej standard za gibanje v računalniških igrah in E-Q-in preslednica, ki je v tej kodi prepoznana kot "", ki so gumbi, ki jih uporabljam za dvig-zavrnitev in sprožitev v igri. Spremenite jih na vse tipke, za katere menite, da bolje delujejo za vašo igro/krmilnik.

Nazadnje povemo arduinu, naj ustavi preverjanje, ki ga Keyboard.end

8. korak: Kodiranje gibanja v enotnosti:

Kodiranje gibanja v enotnosti
Kodiranje gibanja v enotnosti

Najprej vam povem, da to delam za 2d igro

primeri, ki jih boste videli, so narejeni za to. Predvsem pomeni, da če uporabljam vector2, če delate v 3d, boste uporabili vector3. ker bi morali skrbeti za dodatno dimenzijo gibanja v 3d.

Zdaj sem uporabil emulacijo tipkovnice na strani arduino, ker ima Unity nekaj vgrajenega za prepoznavanje tipk na tipkovnici, ki jih lahko uporabljamo.

Če projekt odprete v enotnosti, pojdite na Uredi -> Nastavitve projekta -> Vnos. V svojem inšpektorju lahko vidite, da zažene upravitelja vnosov. Kjer, če kliknete na Osi, lahko vidite, da se odpre cel kup vhodnih imen, ki se običajno uporabljajo za krmilnike računalnikov, kot so tisti, ki jih izdelujemo zdaj. Dva vhoda, ki jih bomo uporabili, sta vodoravna in navpična, ki preverjata, ali ste uganili W-A-S-D.

Najprej želite narediti predmet v hierarhiji prizorov enotnosti, ki bo vaš igralec. V mojem primeru sem tako zabaven fant. To je lahko vse, kar potrebujete, toda za namen moje igre sem tega fanta naredil.

9. korak:

Slika
Slika

Igralcu želite dati 2 stvari. Škatlasti trkalnik 2d in

a Rigidbody 2d in jih uredite tako, kot je na zgornji sliki.

10. korak:

Slika
Slika

Nato želite iti v mapo svojih projektov in ustvariti datoteko

Skript C#. Ki sem ga poimenoval PlayerMovement.

V tem skriptu boste definirali dve spremenljivki. Javni plovec, ki mu pravim moveSpeed. Kar bo določilo, kako hitro greste. In zasebni Rigidbody2D, ki mu pravim RigidPlayer. Kar bo vašim igralcem pomenilo trdno telo.

Ne pozabite priti do urejevalnika enotnosti, kliknite na predvajalnik in dodajte ta novi skript tako, da ga povlečete v inšpektor in nastavite številčno vrednost za moveSpeed.

11. korak:

Slika
Slika

zdaj v svojem Start () želite narediti eno stvar in to je to

Poskrbite, da bo vaš RigidPlayer našel vašega plačnika rigidbody 2d. To naredite z naslednjo vrstico kode:

12. korak:

Slika
Slika

Nato preidemo na update (). Tukaj gremo

da se igralec premakne.

to naredimo s precej preprosto izjavo if, ki bo gledala na negativne in pozitivne ključe iz vodoravnega (AD) in navpičnega (SW) in to uporabila kot številko, da bomo prisilili naše trdno telo 2d, da potisne našega igralca smer. To število bo pomnoženo s spremenljivko moveSpeed.

13. korak:

Slika
Slika

Nazadnje se želite prepričati, da se vaš predvajalnik neha premikati, ko

nič ne pritisneš. To vam je všeč tako:

Zdaj, če želite uporabiti svoje 3 druge gumbe za vse, kar storite s tem stavkom if: if (Input. GetKeyDown (Keycode. Space))

za preslednico in namesto presledka vnesite črko drugih tipk, ki ste jih izbrali za druge tipke.

Korak 14: Priključitev luči na Arduino

Priključitev luči na Arduino
Priključitev luči na Arduino

·

Za povezovanje tega dela boste potrebovali:

· 9 mostičnih žic

· 4 upori

· 4 LED

· 1 kabel arduino uno + usb

· Mizo

Priključitev luči bo izvedena prek sistema Uno.

Na koncu bo videti takole na zgornji sliki:

Upor priključite na dolgo stran LED. Nato priključite mostiček z digitalne številke pin na enoti na upor. v tem primeru sem uporabil digitalne reže za pin 9 -10 -11 -12. Te številke bodo pomembne, ko pridemo do kode za luči.

Od tam želite priključiti skakalec iz talne reže na vašem arduino Uno na mesto na deski, kot je prikazano s črno žico na zgornji sliki.

Potem želite imeti 4 mostičke, ki vodijo v kratek konec vsake LED

Korak 15: Kodiranje Arduino Uno

Kodiranje Arduino Uno
Kodiranje Arduino Uno

Najprej bomo spet opredelili naše spremenljivke

Torej najprej katere digitalne vhode uporabljamo za luči. Naredili bomo char z imenom myCol [20]

16. korak:

Slika
Slika

Nato v nastavitvah želimo znova narediti Serial.begin. Vklopite vse LED diode na izhodu in jih izklopite ob zagonu.

17. korak:

Slika
Slika

In končno želite napisati svojo funkcijo zanke.

To bo povzročilo, da bo Arduino prebral vse podatke, ki prihajajo skozi serijo, dokler se ne zgodi eden od dveh dogodkov. Zaznan je znak za vnos vrstice; to je označeno z lf, ki je nastavljeno na 10 in je prvi argument ali je bila prebrana določena količina bajtov. To je tretji argument in za ta primer je nastavljen na samo en bajt. Podatki so shranjeni v spremenljivki myCol, ki je nastavljena na char in omejitev 20. V readBytesUntil je to drugi argument. Ali drug način za razlago je Serial.readBytesUntil (terminatorCharacter, medpomnilnik, byteLimit);

Izjave if bodo zagotovile, da se določene luči prižgejo, ko enotnost odda signal. V tem primeru imam 4 različne barvne luči, zato enotnost pošljem g za vklop zelene LED, b za vklop modre LED, r za vklop rdeče LED in y za vklop rumene LED.

18. korak: Enota kodiranja luči:

Kodiranje luči Unity Side
Kodiranje luči Unity Side

Preden se lotimo tega, najprej poglej dve stvari.

1. v svojem programu za kodiranje arduino pojdite na Orodje -> Vrata -> in me preverite, na katerem COM -ju je vaš uno. V mojem primeru njegov COM3 (to bo pomembno v kodi)

2. v enotnosti Pojdite na Uredi -> Nastavitve projekta -> Predvajalnik, nato v inšpektorju kliknite na druge nastavitve, pojdite na raven združljivosti Api in ga preklopite iz podomrežja. NET 2.0 v samo. NET 2.0

Okej, to je narejeno. Pojdimo vanjo.

Z desno miškino tipko kliknite svojo hierarhijo in kliknite Ustvari prazno.

To bo prazen predmet igre, ki bo samo obstajal v vaši igri in bo imel za nas en skript. Ta predmet sem poimenoval Init.

19. korak:

Slika
Slika

Nato pojdite na zavihek »projekti« in ustvarite nov skript C#

in ga pokličete Pošiljam.

Prva stvar, ki jo naredite, je, da v vrstice v razdelkih svoje kode zapišete te vrstice:

z uporabo System. IO. Ports;

z uporabo System. Threading;

zato lahko uporabimo spremenljivko SerialPort

20. korak:

Slika
Slika

v tem skriptu bomo naredili naslednje spremenljivke. Upoštevajte, da sem tam dobil COM3. To je lahko za vas drugačno, kot smo razpravljali na začetku tega koraka. Če je 3, ga zamenjajte s številko, ki vam jo je napisal.

21. korak:

Slika
Slika

Na začetku povemo, da naj bodo skripti OpenConnection

funkcijo, ki jo bomo še napisali

posodobitev je bolj preizkus kot karkoli drugega, če pa jo želite vključiti, preizkusite sporočila, ki se pošiljajo enoti. Lahko bi ga pošteno prezrli.

22. korak:

Slika
Slika

Ok zdaj za to funkcijo OpenConnection. To je samo velik

if/else stavek, ki ohranja povezavo odprto, jo samo kopirajte, kot je napisano, in bi morali biti v redu.

23. korak:

Slika
Slika

Zdaj se spomnite kode arduino, ki sem jo preveril

signalizira, da mu bo enotnost poslala.

no, tukaj se to zgodi. V mojem primeru sem priklopil 4 luči, zato sem napisal 4 zelo preproste funkcije. Vse, kar počnejo, je, ko jih pokličejo in pošljejo pismo na arduino. Ko arduino dobi to črko, zasveti lučka, ki ustreza omenjeni črki.

24. korak:

Slika
Slika

Morda se sprašujete, kako naj to pokličem

funkcijo? To naredite z eno preprosto vrstico v katerem koli drugem skriptu c#, ki ga uporabljate za igro. Sending. NameFunctiontukaj ();. Tako na primer v moji igri ima igralec nalogo, da zbere 4 barvne krogle. Zato sem napisal majhen scenarij, ki poskrbi, da ga, ko se približa enemu in pritisne desni gumb, pobere in ta pošlje signal arduinu, da je v tem primeru rumena krogla pobrana. Da ve, oke, moram prižgati rumeno LED:

To vrstico kode lahko postavite kamor koli želite. Če želite, da zasveti, ko se igra začne, jo vstavite v funkcijo zagona. Če želite, da zasveti, ko umre, dajte to v svojo funkcijo za smrt igralcev. Malo eksperimentirajte. Odločil sem se, da bodo luči zunaj igre nekakšen element uporabniškega vmesnika, da bom spremljal krogle, ki jih morate zbrati, ne da bi obremenjeval zaslon.

Priporočena: