Sadržaj:
- Pribor
- Korak 1: Postavite granice igre
- Korak 2: Dodavanje ploča i izrada kontrolera
- Korak 3: Povezivanje Arduina sa serijskim portom
- Korak 4: Povezivanje jedinice s serijskim portom
- Korak 5: Dodavanje lopte
- Korak 6: Dovršavanje igre
Video: Kako napraviti igru za više igrača s Arduino kontrolerima: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
Jeste li se ikada zapitali kako programeri igara stvaraju nevjerojatne igre koje ljudi širom svijeta uživaju igrati? Pa, danas ću vam dati samo mali nagovještaj o tome izradom male igre za više igrača kojom će upravljati Arduino kontroler koji ćete i sami napraviti. Dakle, krenimo.
Pribor
Trebat će vam:
- Prijenosno računalo
- Unity Engine
- C# IDE koji radi s Unityjem, poput vizualnog studija ili Atoma. (Koristit ću Visual Studio Code)
- 2X Arduino Nano
- 2X Velika ploča za kruh
- 2X Mala ploča za kruh
- 4X Tack prekidač (gumb)
- 4X 200Ω otpornik
- 12X spojne žice muški na muški
- Arduino IDE
Bit će vam od pomoći ako imate osnovno razumijevanje korištenja Unityja, no to neće utjecati na vaš napredak jer ćete se s time upoznati tijekom nastajanja igre.
Link za preuzimanje Unity Engine -a:
store.unity.com/download-nuo
Veza za preuzimanje IDE -a koda Visual Studio:
code.visualstudio.com/download
Link za preuzimanje Arduino IDE -a:
www.arduino.cc/en/Main/Software
Korak 1: Postavite granice igre
Prije svega, morate preuzeti jedinstvo
Nakon što to učinite, možete početi postavljati prikaz igre.
Otvorite novi Unity projekt, dajte mu ime i odaberite 2D igru.
Kad se projekt otvori, imajte na umu da postoje 3 glavna odjeljka
- Hijerarhija (tu će se dodati svi vaši objekti i detalji igre).
- Scena (gdje postavljate prikaz igre).
- Igra (gdje možete testirati kako će izgledati prava igra).
Primijetite da ispod hijerarhije postoji vaša scena, a ispod scene "Glavna kamera". Kad odaberete kameru iz hijerarhije, bit će odabrana u sceni
(Sve što se nalazi unutar granica ove kamere prikazat će se u stvarnoj igri).
Pogledajte sliku 1
Naša se igra sastoji od dvije ploče, loptice koja se kreće i granica koje ograničavaju kretanje ploča i lopte.
Počnimo stvaranjem granica.
- Da biste izradili novi objekt igre, odaberite Snimci> Kreiraj> Duhovi> kvadrat (nazovite ga "desna i lijeva granica") Pogledajte sliku 2
- Povucite i ispustite desnu i lijevu granicu do hijerarhije i u sceni će se pojaviti kvadrat.
- Podesite položaj njegove osi x na (5) "desna i lijeva granica"> inspektor> transformiraj> položaj> X. Pogledajte sliku 3
- Zatim prilagodite njegovu ljestvicu tako da bude dovoljno velika da pokrije granice fotoaparata (povucite gornju i donju stranu kvadrata da biste je rastegnuli).
- Prilagodite njegovu boju "s desne i lijeve granice"> inspektor> iscrtavanje spriteja> boju. Pogledajte sliku 3
- Pomaknite se prema dolje u inspektoru i odaberite dodavanje komponente, zatim upišite Rigidbody2D i pritisnite enter, to će u osnovi dodati fiziku vašem objektu igre jer mu daje masu, gravitaciju i otkrivanje sudara. Međutim, u našoj igri ne trebamo gravitaciju pa neka gravitacija bude 0 umjesto 1. Također ćete morati zamrznuti položaj i rotaciju kako se granica ne bi pomaknula pri sudaru. Pogledajte sliku 4
- odaberite dodavanje komponente, zatim upišite Box Collider 2D i pritisnite enter. Ovo će dodati područje oko objekta igre gdje se mogu otkriti sudari. Pogledajte sliku 4
- Sada odaberite desnu i lijevu granicu i pritisnite (ctrl+d) da biste ih duplicirali.
- Preimenujte ga u "lijevu granicu" i preimenujte prvu ("desna ivica").
- Odaberite lijevu granicu i podesite njezin položaj osi x na (-5) na isti način u koraku 3. Sada imate desnu i lijevu granicu.
Ponovite prethodnih 10 koraka s granicama gore i dolje i promijenite položaj y kvadrata umjesto položaja x. Konačni pregled trebao bi biti nešto slično onom na slici.
Pogledajte sliku 5
Korak 2: Dodavanje ploča i izrada kontrolera
Dodavanje ploča
Napravite novi objekt igre i dajte mu ime igrač 1.
Prilagodite:
- Skala: X (1.2), Y (0.15), Z (1)
- Pozicija: X (0), Y (-3,6), z (0)
- Dodajte BoxCollider2D
- Dodajte Rigidbody 2D i zamrznite osi y i z.
Duplirajte (ctrl+d) i preimenujte player za kopiranje 2.
Prilagodite:
- Skala: X (1.2), Y (0.15), Z (1)
- Pozicija: X (0), Y (3.6), z (0)
- BoxCollider će već biti tamo.
- Kruto tijelo 2D već će biti prisutno, a osi y i z već će biti zamrznute.
Pogledajte sliku 1
Izrada kontrolera
Trebat će vam:
- 2X Arduino Nano
- 2X Velika ploča za kruh
- 2X Mala ploča za kruh
- 4X Tack prekidač (gumb)
- 4X otpornik
- 12X muške na muške spojnice
Sada pogledajte fotografije i kartiranje krušne ploče kako biste sastavili upravljačke palice.
- Pričvrstite jedan Arduino Nano čip s malom pločom za kruh.
- pričvrstite 2 prekidača Tack na veliku ploču za kruh kao što je prikazano na slici. Pokušajte držati desnu stranu ploče za kruh simetričnu s lijevom jer će time upravljačka palica izgledati bolje (30. stupac možete koristiti kao simetriju crta)
- Spojite gornji lijevi pin lijevog gumba s 5V iglom u Arduinu na maloj ploči za kruh (stvari koje su povezane s istim stupcem na ploči međusobno su povezane).
- Spojite gornji desni pin desne tipke s 5V iglom u Arduinu.
- Spojite donji desni zatik lijevog gumba s točkom u 31. stupcu pomoću otpornika.
- Spojite donji lijevi pin desne tipke s točkom na 29. stupcu pomoću otpornika.
- Spojite otpornike s GND pinom u Arduinu.
- Spojite gornji desni pin lijeve tipke s D3 iglom u Arduinu.
- Spojite gornji lijevi pin desne tipke s iglom D9 u Arduinu.
- Sada ponovite ove korake i napravite drugi regulator.
Korak 3: Povezivanje Arduina sa serijskim portom
Prvo ćete morati instalirati Arduino IDE.
Nakon što su instalirani, možete početi s izradom Arduino programa koji prima ulaze s gumba i pohranjuje ih u serijski port (COM port). Kad je Arduino ploča spojena na prijenosno računalo, operacijski sustav automatski prepoznaje ploču kao serijski port na koji se programi mogu učitati. Vrijednosti pohranjene u serijskom portu mogu se koristiti u sljedećem koraku kada povežemo Unity Engine sa serijskim portom.
Sada spojimo Arduino sa serijskim portom.
Pogledaj slike
- Povežite Arduino sa svojim prijenosnim računalom
- Alati> Ploča> Arduino Nano
- Ako je vaš Arduino čip noviji (2018-2020) Alati> Procesor> ATmega328P (stari pokretač za pokretanje).
- Ako vaš Arduino čip nije noviji (prije 2018.) Alati> Procesor> ATmega328P
- Alati> Port> COM (koji god se broj pojavio, u mom slučaju to je 10). * Ovo je serijski port na kojem će se pohraniti vrijednosti.
- Kopirajte kôd i zalijepite ga u Arduino IDE i pritisnite ctrl+u za učitavanje programa.
- Ponovite s drugim Arduinom. (kada radite korak 5, obavezno odaberite drugi COM port kako oba kontrolera ne bi bila spojena na isti serijski port).
Kodirati:
void setup () {
Serial.begin (9600); pinMode (3, INPUT); // Reći Arduinu da prima ulaz sa pina D3 pinMode (9, INPUT); // Reći Arduinu da prima ulaz s pina D9} void loop () {if (digitalRead (3) == 1) { /* Ako Arduino primi ulaz od 1 Serial.write (1); s pina 3 Iznesite vrijednost 1 na serijski port Serial.flush (); */ odgoda (2); } if (digitalRead (9) == 1) { /* Ako Arduino primi ulaz od 1 Serial.write (2); s pina 9 Iznesite vrijednost 2 na serijski port Serial.flush (); */ odgoda (2); }}
Objašnjenje programa:
Ovaj kôd jednostavno uzima ulaz s D3 pina i D9 pina u Arduinu, koji su spojeni na gumbe. Gumbi su ili pritisnuti ili pritisnuti, što znači da su očitavanja koja su uzeta s njih 1 ili 1 (pritisnuta) ili 0 (bez pritiska). Ako je ulaz s desne tipke (iz D9) 1 (pritisnut), pohranite vrijednost 1 u serijski port. Ako je ulaz s lijeve tipke (s D3) 1 (pritisnut), pohranite vrijednost 2 u serijski port.
Korak 4: Povezivanje jedinice s serijskim portom
Za ovaj korak identificirat ćemo serijski port u Unityju kako bi mogao primati ulaze iz Arduina kada se pritisnu gumbi. Instalirajte Visual Studio Code na prijenosno računalo. Zatim idite na Unity, odaberite igrača 1 iz hijerarhije, pomaknite se prema dolje i odaberite dodavanje komponente i upišite player1_motion pa pritisnite enter. Pogledajte sliku 1
U inspektoru će se stvoriti C# skripta, desnom tipkom miša kliknite na nju i odaberite uredi skriptu, vizualni kôd studija trebao bi se otvoriti i pokazat će zadani kôd koji izgleda kao slika 2.
Kopirajte sljedeći kod, a zatim promijenite "SerialPort sp = novi SerialPort (" COM10 ", 9600);" sa SerialPort sp = novi SerialPort ("COM port na koji je povezan vaš Arduino", 9600); možete ga pronaći ako se vratite na svoj Arduino kôd i otvorite Alati> Port> COM (koji god se broj pojavio).
Kodirati:
pomoću System. Collections;
pomoću System. Collections. Generic; pomoću UnityEngine; pomoću System. IO. Ports; player javne klase1_motion: MonoBehaviour {float speed = 8; private float amounttomove; SerialPort sp = novi SerialPort ("COM10", 9600); // Start se poziva prije prvog ažuriranja okvira void Start () {sp. Open (); sp. ReadTimeout = 1; } // Ažuriranje se poziva jednom po okviru void Update () {amounttomove = speed*0.01f; if (sp. IsOpen) {pokušajte {moveObject (sp. ReadByte ()); ispis (sp. ReadByte ()); } catch (System. Exception) {}}} void moveObject (int Direction) {if (Direction == 1) {transform. Translate (Vector3.left*amounttomove, Space. World); } if (Smjer == 2) {transform. Translate (Vector3.right*amounttomove, Space. World); }}}
Objašnjenje koda:
Ovaj kod govori jedinici da prima ulaze sa serijskog porta (COM 10). Kada se pritisne lijeva tipka, Arduino šalje vrijednost 1 u serijski port, ako jedinica primi 1 iz serijskog porta, objektu igre "igrač 1" dodaje se brzina u lijevom smjeru. Kada se pritisne desna tipka, Arduino šalje vrijednost 2 u serijski port, ako jedinica primi 2 iz serijskog porta, objektu za igru "player 1" dodaje se brzina u pravom smjeru. ako serijski port ne primi vrijednost iz serijskog porta, brzina se ne dodaje ni u jednom smjeru, stoga ploča ostaje nepomična.
Nakon što kopirate kôd, pritisnite F5 za izradu i pokretanje koda. Vratite se jedinstvu i pritisnite gumb za reprodukciju, igrač 1 trebao bi se pomaknuti udesno kada pritisnete desno i lijevo kada pritisnete lijevo.
Sada učinite iste korake još jednom, ali s playerom 2 i obavezno upišite u "Dodaj komponentu" player2_motion umjesto player1_motion i identificirajte drugi COM port na koji je povezan drugi kontroler, a ne isti serijski port.
Također ćete morati promijeniti "public class player1_motion: MonoBehaviour" u "public class player2_motion: MonoBehaviour" u samom kodu.
Korak 5: Dodavanje lopte
- Dodajte novi objekt igre, ali ovaj put odaberite krug umjesto kvadrata.
- Preimenujte ga u "loptu".
- Povucite i ispustite hijerarhiju.
- Podesite ljestvicu (X: 0,2 - Y: 0,2 - Z: 0,2).
- Dodajte 2D kruto tijelo i zamrznite samo os Z.
- Promijenite masu na 0,0001
- Promijenite skalu gravitacije na 0.
- Dodajte Box Collider 2D.
- Idite na Snimci> Stvori> Fizički materijal 2D Pogledajte sliku 1
- promijenite ime u "bounce"
- Promijenite trenje na nulu od inspektora
- Promijenite bounciness u 1 od inspektora
- Povucite i ispustite "odskočiti" u Rigidbody 2D> Materijal Pogledajte sliku 2
- Ponovno odaberite "loptu" iz hijerarhije i idite na dodavanje komponente i upišite Ball_movement pa pritisnite enter.
- Desnom tipkom miša kliknite skriptu i odaberite uredi skriptu.
- Kopirajte donji kôd i pritisnite F5 da biste ga izgradili i pokrenuli.
Kodirati:
pomoću System. Collections;
pomoću System. Collections. Generic; pomoću UnityEngine; javna klasa Ball_movement: MonoBehaviour {// Start se poziva prije prvog ažuriranja okvira private float force = 2; void Start () {StartCoroutine (move ()); } IEnumerator move () {yield return new WaitForSeconds (2); GetComponent (). AddForce (novi Vector2 (1f, 0.5f)*0,02f*sila); }}
Objašnjenje koda
Ovaj kôd daje lopti brzinu u oba smjera u smjeru X i smjeru Y iste veličine, zbog čega se lopta kreće pod kutom od 45 °. U 8. koraku smo dodali fizički materijal lopti i promijenili njezinu poskočnost, čime se održava kretanje lopte kroz igru.
Korak 6: Dovršavanje igre
Sada moramo omogućiti gubitak, ako pokrenete igru, primijetit ćete da kada lopta prođe igrača 1 ili igrača 2, ona se samo odbije od granice, a to nije baš ono što nam treba u igri. Umjesto toga, želimo napraviti brojač rezultata koji broji rezultat svaki put kada se lopta sudari s granicama gore ili dolje i poništiti položaj lopte.
- Povucite i ispustite loptu iz Hijerarhije u Project. Napravili ste montažnu loptu tako da je kasnije možete koristiti.
- Desnom tipkom miša kliknite Hijerarhiju i odaberite Stvori prazno. pojavit će se prazan objekt, preimenovati ga u respawn loptu i promijeniti njen položaj tako da bude isti kao položaj lopte.
- Desnom tipkom miša kliknite hijerarhiju i odaberite UI >> Text. Uočite da tekst prati platno, položaj teksta u igri ovisi o položaju teksta na platnu, a ne u granicama naše igre. (Pogledajte sliku 1).
- Promijenite položaj teksta gdje god želite.
- Ponovite korake 3 i 4 za rezultat drugog igrača.
- Upišite prvi tekst "Igrač 1 rezultat: 0", a drugi tekst "Igrač 2 bod: 0". (Pogledajte sliku 2).
- Napravite skriptu na gornjoj granici pod nazivom p1wins i kopirajte sljedeći kod.
Kodirati:
pomoću System. Collections;
pomoću System. Collections. Generic; pomoću UnityEngine; pomoću UnityEngine. SceneManagement; pomoću UnityEngine. UI; p1wins javne klase: MonoBehaviour {public Text score; javni Transform ball_respawn; javna lopta GameObject; privatni int p1 = 0; // Start se poziva prije prvog ažuriranja okvira void Start () {} // Ažuriranje se poziva jednom po okviru void Update () {score.text = "Rezultat igrača 1:" + p1; } void OnCollisionEnter2D (Collision2D other) {if (other.gameObject.tag == "Ball") {Destroy (other.gameObject); p1 ++; Instantiate (ball, ball_respawn.position, ball_respawn.rotation); }}}
8. Povucite i ispustite montažni okvir lopte iz projekta u koraku 1 u parametar Ball. (Pogledajte sliku 3)
9. Povucite i ispustite loptu koja se ponovno pojavljuje iz hijerarhije na parametar Ball-rerspawn. (Pogledajte sliku 3)
10. povucite i ispustite igrača 1 rezultat iz hijerarhije u parametar Score. (Pogledajte sliku 3)
Objašnjenje koda:
Kad se lopta sudari s gornjom granicom, ona se uništava i ponovno se pojavljuje na poziciji ball_respawn koja nam je dodijeljena u koraku 2. cilj da lopta postane montažna je da je možemo ponovno prikazati sa svim njezinim značajkama, u protivnom, ako smo je koristili iz hijerarhije će se ponovno pojaviti, ali se neće pomaknuti. Također, kada se lopta sudari s gornjom granicom, vrijednost koja je izvorno jednaka 0 naziva se p1 povećava se za 1. ta se vrijednost prikazuje kao tekst, pa se kada se lopta sudari s gornjom granicom rezultat za igrača 1 povećava za 1.
Sada učinite korake 7, 8, 9 i 10 za donju granicu
za korak 7, stvorite skriptu zvanu p2wins i umjesto toga kopirajte sljedeći kod.
za korak 10, povucite i ispustite player 2 rezultat iz hijerarhije u parametar Score.
Kodirati:
pomoću System. Collections;
pomoću System. Collections. Generic; pomoću UnityEngine; pomoću UnityEngine. SceneManagement; pomoću UnityEngine. UI; p2wins javne klase: MonoBehaviour {public Text score; javni Transform ball_respawn; javna lopta GameObject; privatni int p2 = 0; // Start se poziva prije prvog ažuriranja okvira void Start () {} // Ažuriranje se poziva jednom po okviru void Update () {score.text = "Rezultat igrača 2:" + p2; } void OnCollisionEnter2D (Collision2D other) {if (other.gameObject.tag == "Ball") {Destroy (other.gameObject); p2 ++; Instantiate (ball, ball_respawn.position, ball_respawn.rotation); }}}
Preporučeni:
Aruduino LED igra Brzi klik za igru za dva igrača: 8 koraka
Aruduino LED igra Brza igra za dva igrača: Ovaj projekt inspiriran je @HassonAlkeim. Ako ste voljni detaljno pogledati, ovdje je veza koju možete provjeriti https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Ova igra je poboljšana verzija Alkeima. To je
Kako napraviti Bartop arkadnu igru za 2 igrača s prilagođenim utorima za kovanice, pomoću Pandorine kutije: 17 koraka (sa slikama)
Kako napraviti Bartop arkadu za 2 igrača s prilagođenim utorima za kovanice, pomoću Pandorine kutije: Ovo je korak po korak vodič o tome kako izgraditi vrhunski arkadni stroj s trakom za 2 igrača koji ima prilagođene utore za novčiće ugrađene u okvir za izbor. Utori za kovanice bit će napravljeni tako da prihvaćaju samo kovanice veličine četvrtine i veće. Ova arkada se napaja
Kako napraviti Arduino video igru: 5 koraka
Kako napraviti Arduino video igru: U ovom uputstvu naučit ćete kako napraviti jednostavnu video igru pomoću Arduina. Bit će to najbolji hobi projekti za djecu. Počnimo
Arduino: Frustrirajuće umjetničko vozilo za više igrača: 13 koraka
Arduino: Frustrating Multiplayer Art Car: Ovo je umjetnički automobil koji je već najavio Bluetooth vezu sa pametnim telefonom i servo je bestuurt koji se može otvoriti sredinom dana. Optioneel je om het chaotisch/ frustrerend te maken voor de gebruiker door er voor te zorgen dat de servo i
Arduino pong za više igrača- ako ovo, onda ono: 5 koraka
Arduino Singleplayer Pong-If This, then That: Dit arduino projekt je gebaseerd op een 2 speler pong projekt hier op instructables (https: //www.instructables.com/id/Portable-Arduino-a …) maar dit projekt je pojedinačni igrač upoznao je jednostavnu AI.Onderdelen: Arduino Uno Nokia 5100 scherm. https: // ww