Sadržaj:

Arduino kontroler igre sa svjetlima koja odgovaraju vašoj igri Unity :: 24 koraka
Arduino kontroler igre sa svjetlima koja odgovaraju vašoj igri Unity :: 24 koraka

Video: Arduino kontroler igre sa svjetlima koja odgovaraju vašoj igri Unity :: 24 koraka

Video: Arduino kontroler igre sa svjetlima koja odgovaraju vašoj igri Unity :: 24 koraka
Video: Leap Motion SDK 2024, Srpanj
Anonim
Arduino kontroler igre sa svjetlima koja odgovaraju vašoj igri Unity
Arduino kontroler igre sa svjetlima koja odgovaraju vašoj igri Unity

Prvo sam ovo napisao riječima. Ovo je prvi put da koristim instruktore pa kad god kažem: napišite kôd tako da znate da mislim na sliku na vrhu tog koraka.

U ovom projektu koristim 2 arduina za pokretanje 2 odvojena bita koda jer sam imao problema s radom samo s jednim

To su Uno i Leonardo

ukupno je ovo ono što će vam trebati za izradu ovog projekta.

· 7 tipki

· 23 kratkospojne žice

· 1 arduino Leonardo + USB kabel

· 4 otpornika · 4 LED -a

· 1 arduino uno + USB kabel

· 2 matične ploče

Korak 1: Povezivanje kontrolnih gumba s Arduinom

Povezivanje kontrolnih gumba s Arduinom
Povezivanje kontrolnih gumba s Arduinom

Ono što vam je potrebno za povezivanje ovog dijela:

· 7 tipki

· 14 kratkospojnih žica

· 1 arduino Leonardo + USB kabel

· Matična ploča

Gumbi su prilično jednostavni za spajanje, ali brzo mogu postati nered za prikaz u obliku slike.

· Prvo postavite tipke na položaje koje sam označio na gornjoj slici.

· Drugo, želite spojiti kratkospojnik sa utora za zemlju na arduino Leonardu u minus red na ploči.

· Sada spajate skakače s bilo kojeg mjesta u minus redu u red koji je u skladu s desnom iglom vašeg gumba. to će mu dati snagu.

· Zatim želite spojiti kratkospojnu žicu iz reda koji je u skladu s lijevom iglom vašeg gumba za pritiskanje na Leonardove digitalne ulaze. Za gumbe ovdje sam koristio utor 2 - 3 - 4 - 5 - 6 - 7- 8

Pokazao sam samo žicu koja ide na ulaz 8 na slici jer postaje vrlo neuredna slika koja vam prikazuje sve žice koje se međusobno prelaze.

Korak 2: Kodiranje Arduino Leonarda:

Kodiranje Arduino Leonarda
Kodiranje Arduino Leonarda

Pa da vam kažem razlog zašto za ovo koristim Leonarda. To je zato što ima određeni čip koji Uno nema, pa ga računalo prepoznaje kao USB ulazni uređaj. Slično kao i tipkovnica. Što nam omogućuje da učinimo nešto što nam kao programerima čini život pakleno puno lakšim. Emulacija tipkovnice. Računalo ćemo prevariti da pomisli da pritiskamo određene tipke na tipkovnici dok zapravo pritisnemo gumbe na upravljaču.

Sada ću vas provesti, pomislili ste kod korak po korak.

Najprije skroz pri vrhu uključujemo Keyboard.h. To će nam omogućiti korištenje funkcija tipkovnice koje ćemo koristiti u kodu.

3. korak:

Slika
Slika

Zatim moramo definirati ulaze za digitalni ulaz koje ćemo koristiti na

Leonardo za svaki gumb.

Također sam svakom od njih dao ime po ključu koji ću oponašati.

Korak 4:

Slika
Slika

Odatle ulazimo u funkciju postavljanja. To govori o

arduino što radi pri pokretanju.

prvo pišemo Serial.begin koji će otvoriti serijski port i postaviti brzinu prijenosa podataka na 9600 bps

i definiramo da su svi imenovani pinovi ulazni.

5. korak:

Slika
Slika

I na kraju zapisujemo našu funkciju petlje koja će provjeriti je li

pritisnuti gumbi i reći arduinu kako na to reagirati.

Prvo pišemo Keyboard.begin koji će arduinu reći da se mora pobrinuti za nas pomoću funkcija tipkovnice

Korak 6:

Slika
Slika
Slika
Slika
Slika
Slika

Zatim za svaki gumb napišemo if/else izjavu koja ide ovako

Dakle, ono što sam rekao arduinu ovdje je: Ako je moja lijeva tipka pritisnuta na kontroleru, natjerajte računalo da misli da pritiskamo tipku "a", a ako to nije slučaj, neka pomisli da smo pustili tipku.

U osnovi ponavljate ovaj blok koda za svaki gumb na vašem kontroleru. s promjenama za svaku varijablu i ključeve koje varijabla treba oponašati

Korak 7:

Slika
Slika

Ključevi koje smo ovdje rekli računalu da pritisnu su W - A - S - D koji

prilično su standard za kretanje u računalnim igrama i E-Q-te razmaknica koja je u ovom kodu prepoznata kao '' koje tipke koristim za podizanje-odbacivanje i paljenje u mojoj igri. Slobodno ih promijenite na bilo koje tipke za koje smatrate da bolje funkcioniraju za vašu igru/kontroler.

Zatim na kraju kažemo arduinu da zaustavi provjeru koju Keyboard.end završava

Korak 8: Kodiranje pokreta u jedinstvu:

Kodiranje pokreta u jedinstvu
Kodiranje pokreta u jedinstvu

Prvo da vam kažem da ovo radim za 2d igru pa

primjeri koje ćete vidjeti stvoreni su za to. Uglavnom znači da tamo gdje koristim vector2 ako radite u 3d, koristiti ćete vector3. jer biste morali brinuti o dodatnoj dimenziji kretanja u 3d.

Razlog zašto sam koristio emulaciju tipkovnice na arduino strani je taj što Unity ima nešto ugrađeno za prepoznavanje tipki na tipkovnici koje možemo koristiti.

Ako zajednički otvorite svoj projekt, idite na Uredi -> Postavke projekta -> Unos. Možete vidjeti u svom inspektoru da podiže upravitelj unosa. Gdje ako kliknete na Osi, možete vidjeti da se otvara čitava hrpa ulaznih imena koja se obično koriste za kontrolere računala poput onih koje sada stvaramo. Dva ulaza koja ćemo koristiti su vodoravni i okomiti koji provjeravaju da li ste pogodili W-A-S-D.

Prvo želite napraviti objekt U hijerarhiji scena jedinstva koja će biti vaš igrač. U mom slučaju biti zabavan mali momak. Ovo može biti što god vam treba, ali u svrhu moje igre stvorio sam ovog tipa.

Korak 9:

Slika
Slika

Ovom igraču želite dati 2 stvari. Kutijski sudarač 2d i

a Rigidbody 2d i uredite ih tako da budu kao na gornjoj slici.

10. korak:

Slika
Slika

Zatim želite otići u mapu svojih projekata i stvoriti

C# skripta. Koju sam nazvao PlayerMovement.

U ovoj skripti ćete definirati 2 varijable. Javni plovak koji nazivam moveSpeed. Što će odrediti koliko brzo idete. I privatni Rigidbody2D koji zovem RigidPlayer. Što će vašim igračima tražiti kruto tijelo.

Ne zaboravite otići u uređivač jedinstva, kliknite na player i dodajte ovu novu skriptu povlačenjem u inspektor i postavite vrijednost broja za moveSpeed.

11. korak:

Slika
Slika

sada u svom Start () želite učiniti jednu stvar, a to je učiniti

pobrinite se da vaš RigidPlayer može pronaći vašeg platitelja rigidbody 2d. To činite sa sljedećim retkom koda:

Korak 12:

Slika
Slika

Zatim prelazimo na update (). Evo kamo idemo

kako bi se igrač pokrenuo.

to činimo s prilično jednostavnom if izjavom koja će gledati negativne i pozitivne ključeve iz vodoravnog (AD) i okomitog (SW) i primijeniti to kao broj da prisilimo staviti naše 2d kruto tijelo da gurne našeg igrača smjer. Taj će se broj pomnožiti s varijablom moveSpeed.

Korak 13:

Slika
Slika

Na kraju, želite biti sigurni da se vaš player prestaje kretati kada

ne pritiskaš ništa. Ovo vam se sviđa ovako:

Sada, ako želite koristiti svoja 3 druga gumba za bilo što što radite s ovom if naredbom: if (Input. GetKeyDown (Keycode. Space))

za razmaknicu i umjesto razmaka stavite slovo drugih tipki koje ste odabrali koristiti za ostale tipke.

Korak 14: Priključivanje svjetla na Arduino

Spajanje svjetla na Arduino
Spajanje svjetla na Arduino

·

Ono što vam je potrebno za povezivanje ovog dijela:

· 9 kratkospojnih žica

· 4 otpornika

· 4 LED diode

· 1 arduino uno + USB kabel

· Matična ploča

Spajanje svjetla izvršit će se putem Uno -a.

Na kraju će izgledati ovako:

Priključite otpornike na dugu stranu LED dioda. Zatim spojite kratkospojnik s digitalnog broja pina na uno na otpornike. u ovom slučaju koristio sam digitalne priključke za pin 9 -10 -11 -12 ti će brojevi biti relevantni kada dođemo do koda za svjetla.

Odatle želite spojiti kratkospojnik sa utora za tlo na vašem arduino Uno na mjesto na vašoj ploči kako je prikazano crnom žicom na gornjoj slici.

Tada želite da 4 kratkospojnika vode u kratki kraj svake LED

Korak 15: Kodiranje Arduino Uno

Kodiranje Arduino Uno
Kodiranje Arduino Uno

Prvo ćemo opet definirati naše varijable

Dakle, prvo koje digitalne ulaze koristimo za svoja svjetla. Napravit ćemo char pod nazivom myCol [20]

Korak 16:

Slika
Slika

Zatim u postavljanju želimo ponoviti Serial.begin. Uključite sve naše LED diode na izlaz i isključite ih sve pri pokretanju.

Korak 17:

Slika
Slika

I na kraju želite napisati svoju funkciju petlje.

To će uzrokovati da Arduino čita sve podatke koji dolaze serijski dok se ne dogodi jedan od dva događaja. Otkriven je ili znak unosa retka; to se identificira pomoću lf koji je postavljen na 10 i prvi je argument ili je pročitana određena količina bajtova. Ovo je treći argument i za ovaj primjer postavljen je na samo jedan bajt. Podaci su pohranjeni u varijabli myCol, koja je postavljena na char i ograničenje od 20. U readBytesUntil ovo je drugi argument. Ili drugi način da to objasnite je Serial.readBytesUntil (terminatorCharacter, međuspremnik, byteLimit);

Ako se naredbe if pobrinu da se određena svjetla uključe kada jedinica da signal. U ovom slučaju dobio sam 4 svjetla u različitim bojama pa pošaljem jedinicu da pošalje g za uključivanje zelene LED diode, b za uključivanje plave LED diode, r za uključivanje crvene LED diode i y za uključivanje žute LED diode.

Korak 18: Kodiranje svjetla Unity Side:

Kodiranje svjetla Unity Side
Kodiranje svjetla Unity Side

Prije nego prijeđemo na ovo, razmislite o dvije stvari.

1. u svom arduino programu za kodiranje idite na Alat -> Port -> i provjerite mi na kojem COM -u je vaš uno. U mom slučaju njegov COM3 (to će biti važno u kodu)

2. u jedinici Idite na Uredi -> Postavke projekta -> Player, zatim u inspektoru kliknite na druge postavke idite na Api kompatibilnost Razina i prebacite je s. NET 2.0 podmreže na samo. NET 2.0

Okej, to je učinjeno. Uđimo u to.

Desnom tipkom miša kliknite svoju hijerarhiju i kliknite Stvori prazno.

Ovo će biti prazan objekt igre koji će samo postojati u vašoj igri i držati jednu skriptu za nas. Ovaj objekt sam nazvao Init.

Korak 19:

Slika
Slika

Zatim idite na karticu Vaši projekti i stvorite novu C# skriptu

i nazovite to Slanje.

Prvo što napravite je upisati ovo u retke u odjeljcima korištenja koda:

pomoću System. IO. Ports;

pomoću System. Threading;

to znači da možemo koristiti varijablu SerialPort

Korak 20:

Slika
Slika

u ovoj skripti napravit ćemo sljedeće varijable. Imajte na umu da sam tamo dobio COM3, ovo bi moglo biti drugačije za vas o čemu smo razgovarali na početku ovog koraka. Ako je to mjesto zamijenite 3 brojem koji je za vas rekao.

Korak 21:

Slika
Slika

U početku kažemo skripti za korištenje OpenConnection

funkciju koju ćemo malo prije napisati

ažuriranje je više test nego bilo što drugo, ali ako ga želite uključiti, testirat će se poruke koje se šalju jedinstvu. Mogli biste to iskreno zanemariti.

Korak 22:

Slika
Slika

Ok sada za ovu funkciju OpenConnection. Ovo je samo veliki

if/else izjava koja održava vezu otvorenom samo je kopirajte kao što je napisano i trebali biste biti u redu.

Korak 23:

Slika
Slika

Sada se sjetite arduino koda za koji sam provjerio

signali koje će mu jedinstvo poslati.

pa ovo se tamo događa. U mom slučaju sam spojio 4 svjetla pa sam napisao 4 funkcije koje su izuzetno jednostavne. Sve što rade je kad ih pozovu, pošalju pismo arduinu. Kad arduino dobije to slovo, pali se svjetlo koje odgovara tom slovu.

Korak 24:

Slika
Slika

Možda se pitate kako to mogu nazvati

funkcija? Pa to radite s jednim jednostavnim retkom u bilo kojoj od drugih c# skripti koje koristite za igru. Slanje. NameFunctionovdje ();. Tako na primjer u mojoj igri igrač ima zadatak prikupiti 4 kugle u boji. Napisao sam mali scenarij koji osigurava da, kad se približi jednoj i pritisne desnu tipku, podigne je i pošalje signal arduinu da je u ovom slučaju Žuta kugla podignuta. Da bi znao, ok, moram upaliti žutu LED:

Ovaj red koda možete staviti gdje god želite. Ako želite da zasvijetli kada igra počne, stavite je u funkciju pokretanja. Želite li da zasvijetli kad umre, stavite to u svoju funkciju za smrt igrača. Eksperimentirajte malo. Odlučio sam učiniti svjetla nekakvim elementom korisničkog sučelja izvan igre kako bih pratio kugle koje morate sakupiti, a da ne zatrpate zaslon.

Preporučeni: