Sadržaj:
- Supplies
- Korak 1: Postavite granice igre
- Korak 2: Dodavanje ploča i izrada kontrolera
- Korak 3: Povezivanje Arduina sa serijskim portom
- Korak 4: Povezivanje Unity -a sa 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 izmjena: 2024-01-30 08:04
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 tako što ćete napraviti malu igru za više igrača kojom će upravljati Arduino kontroler koji ćete i sami napraviti. Dakle, počnimo.
Supplies
Trebat će vam:
- A Laptop
- Unity Engine
- C# IDE koji radi sa Unity -om, poput vizuelnog studija ili Atoma. (Koristit ću Visual Studio Code)
- 2X Arduino Nano
- 2X Velika ploča za hleb
- 2X Mala ploča za hleb
- 4X Tack prekidač (dugme)
- 4X 200Ω otpornik
- 12X muške na muške spojnice
- Arduino IDE
Bit će vam od pomoći ako imate osnovno razumijevanje korištenja Unityja, međutim 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
Link za preuzimanje Visual Studio Code IDE:
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 Unity
Kada to učinite, možete početi postavljati prikaz igre.
Otvorite novi Unity projekt, dajte mu ime i odaberite 2D igra.
Kada se projekt otvori, primijetite da postoje 3 glavna odjeljka koja se zovu
- Hijerarhija (ovdje ć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 u granicama ove kamere će se pokazati u stvarnoj igri).
Pogledajte sliku 1
Naša igra sastoji se od dvije daske, loptice koja se kreće i granica koje ograničavaju kretanje dasaka i lopte.
Počnimo stvaranjem granica.
- Da biste stvorili novi objekt igre, odaberite Sredstva> Kreiraj> Duhovi> kvadrat (nazovite ga “desna i lijeva granica”) Pogledajte sliku 2
- Povucite i ispustite desnu i lijevu granicu do hijerarhije i kvadrat će se pojaviti u sceni.
- 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 kamere (povucite gornju i donju stranu kvadrata da je rastegnete).
- Podesite njegovu boju “s desne i lijeve ivice”> inspektor> iscrtavanje spriteta> 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 detekciju sudara. Međutim, ne treba nam gravitacija u našoj igri, pa učinite gravitaciju 0 umjesto 1. Također ćete morati zamrznuti položaj i rotaciju kako se granica ne bi pomjerila 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 njen položaj x osi 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 bi trebao 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.
Podesite:
- Skala: X (1.2), Y (0.15), Z (1)
- Pozicija: X (0), Y (-3,6), z (0)
- Dodaj BoxCollider2D
- Dodajte Rigidbody 2D i zamrznite osi y i z.
Duplirajte (ctrl+d) i preimenujte uređaj za kopiranje 2.
Podesite:
- Skala: X (1.2), Y (0.15), Z (1)
- Pozicija: X (0), Y (3.6), z (0)
- BoxCollider će već biti tamo.
- Rigidbody 2D će već biti tamo, a osi y i z će već biti zamrznute.
Pogledajte sliku 1
Izrada kontrolera
Trebat će vam:
- 2X Arduino Nano
- 2X Velika ploča za hleb
- 2X Mala ploča za hleb
- 4X Tack prekidač (dugme)
- 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 desnu stranu ploče za kruh držati simetrično u odnosu na lijevu jer će tako upravljačka palica izgledati bolje (30. kolonu možete koristiti kao simetriju linija)
- Spojite gornji lijevi pin lijevog dugmeta sa iglom od 5 V u Arduinu na maloj ploči za kruh (stvari koje su povezane s istim stupom na ploči za povezivanje povezane su jedna s drugom).
- Spojite gornji desni pin desnog gumba s 5V iglom u Arduinu.
- Spojite donji desni zatik lijevog dugmeta s točkom u 31. koloni pomoću otpornika.
- Spojite donji lijevi pin desnog gumba s točkom na 29. koloni 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 desnog gumba s pinom 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). Kada je Arduino ploča povezana s vašim prijenosnim računarom, operativni sistem 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.
Pogledajte slike
- Povežite Arduino sa svojim laptopom
- Alati> Ploče> 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 biti pohranjene vrijednosti.
- Kopirajte kôd i zalijepite ga u Arduino IDE i pritisnite ctrl+u da biste učitali program.
- Ponovite s drugim Arduinom. (kada radite korak 5, obavezno odaberite drugi COM port tako da oba kontrolera neće biti povezana na isti serijski port).
Šifra:
void setup () {
Serial.begin (9600); pinMode (3, INPUT); // Reći Arduinu da prima ulaz sa pina D3 pinMode (9, INPUT); // Reći Arduinu da primi ulaz sa pina D9} void loop () {if (digitalRead (3) == 1) { /* Ako Arduino primi ulaz od 1 Serial.write (1); sa 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); sa pina 9 Iznesite vrijednost 2 na serijski port Serial.flush (); */ odgoda (2); }}
Objašnjenje programa:
Ovaj kôd jednostavno uzima ulaz sa D3 pina i D9 pina u Arduinu, koji su povezani s gumbima. Dugmad su pritisnuta ili pritisnuta, što znači da su očitavanja koja su sa njih uzeta ili 1 (pritisnuto) 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 (iz D3) 1 (pritisnut), pohranite vrijednost 2 u serijski port.
Korak 4: Povezivanje Unity -a sa serijskim portom
Za ovaj korak identificirat ćemo serijski port u Unityju kako bi mogao primati ulaze iz Arduina kada se pritisnu tipke. 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, a zatim pritisnite enter. Pogledajte sliku 1
U inspektoru će se stvoriti C# skripta, desnom tipkom miša kliknite na nju i odaberite uređivanje skripte, 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).
Šifra:
pomoću System. Collections;
pomoću System. Collections. Generic; koristeći UnityEngine; pomoću System. IO. Ports; igrač 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) {probaj {moveObject (sp. ReadByte ()); print (sp. ReadByte ()); } catch (System. Exception) {}}} void moveObject (int Direction) {if (Direction == 1) {transform. Translate (Vector3.left*amounttomove, Space. World); } if (Direction == 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 lijevo dugme, Arduino šalje vrijednost 1 na serijski port, ako jedinica primi 1 sa serijskog porta, objektu za igru "igrač 1" dodaje se brzina u lijevom smjeru. Kada se pritisne desno dugme, Arduino šalje vrijednost 2 na serijski port, ako jedinica primi 2 sa serijskog porta, objektu za igru "igrač 1" dodaje se brzina u pravom smjeru. ako serijski port ne primi vrijednost sa serijskog porta, brzina se ne dodaje ni u jednom smjeru, stoga ploča ostaje nepomična.
Nakon što kopirate kôd, pritisnite F5 da biste izgradili i pokrenuli kôd. Vratite se jedinstvu i pritisnite dugme za reprodukciju, igrač 1 bi trebao krenuti udesno kada pritisnete desno i lijevo kada pritisnete lijevo.
Sada učinite iste korake još jednom, ali s playerom 2 i obavezno upišite 'Add component' 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 skalu (X: 0,2 - Y: 0,2 - Z: 0,2).
- Dodajte 2D tvrdo tijelo i zamrznite samo os Z.
- Promijenite masu na 0,0001
- Promijenite skalu gravitacije na 0.
- Dodajte Box Collider 2D.
- Idite na Snimci> Kreiraj> Fizički materijal 2D Pogledajte sliku 1
- promijenite ime u "bounce"
- Promijenite trenje na nulu od inspektora
- Promijenite bounciness na 1 od inspektora
- Povucite i ispustite "odskočiti" u Rigidbody 2D> Materijal Pogledajte sliku 2
- Ponovo odaberite "loptu" iz hijerarhije i idite na dodavanje komponente i upišite Ball_movement, a zatim pritisnite enter.
- Desnim klikom na skriptu odaberite uređivanje skripte.
- Kopirajte donji kôd i pritisnite F5 da biste ga izgradili i pokrenuli.
Šifra:
pomoću System. Collections;
pomoću System. Collections. Generic; koristeći 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*force); }}
Objašnjenje koda
Ovaj kod 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 koraku 8 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 sa granicama prema gore ili prema dolje i resetirati položaj lopte.
- Povucite i ispustite loptu iz Hijerarhije u Project. Napravili ste montažnu loptu tako da je možete koristiti kasnije.
- Desnim klikom na Hijerarhiju 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.
- Desnim klikom na hijerarhiju 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.
- Unesite prvi tekst "Rezultat igrača 1: 0", a drugi tekst "Rezultat igrača 2: 0". (Pogledajte sliku 2).
- Napravite skriptu na gornjoj granici koja se zove p1wins i kopirajte sljedeći kod.
Šifra:
pomoću System. Collections;
pomoću System. Collections. Generic; koristeći UnityEngine; koristeći UnityEngine. SceneManagement; koristeći UnityEngine. UI; javna klasa p1wins: 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 ponovo 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 koju smo dodijelili u koraku 2. cilj da lopta postane montažna je da je možemo ponovo prikazati sa svim njenim karakteristikama, 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 za 1. ova vrijednost se prikazuje kao tekst, pa kada se lopta sudari s gornjom granicom, rezultat za igrača 1 se povećava za 1.
Sada učinite korake 7, 8, 9 i 10 za donju granicu
za korak 7, kreirajte skriptu zvanu p2wins i umjesto toga kopirajte sljedeći kod.
za korak 10, povucite i ispustite igrač 2 rezultat iz hijerarhije na parametar Score.
Šifra:
pomoću System. Collections;
pomoću System. Collections. Generic; koristeći UnityEngine; koristeći UnityEngine. SceneManagement; koristeći 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 kadru void Update () {score.text = "Rezultat igrača 2:" + p2; } void OnCollisionEnter2D (Collision2D other) {if (other.gameObject.tag == "Ball") {Uništi (other.gameObject); p2 ++; Instantiate (ball, ball_respawn.position, ball_respawn.rotation); }}}
Preporučuje se:
(Više igrača) Borba na GameGo -u sa Makecode Arkadom: 6 koraka
(Više igrača) Borba na GameGo -u sa Makecode Arcade: GameGo je retro prijenosna igraća konzola kompatibilna sa Microsoft Makecode -om koju je razvilo TinkerGen STEM obrazovanje. Baziran je na STM32F401RET6 ARM Cortex M4 čipu i napravljen je za STEM edukatore ili samo ljude koji se vole zabaviti stvarajući retro video ga
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 Arkadnu arkadu za dva igrača "uradi sam" s prilagođenim utorima za kovanice, pomoću Pandorine kutije: Ovo je korak po korak vodič o tome kako izgraditi vrhunsku arkadnu mašinu za 2 igrača koja ima prilagođene utore za novčiće ugrađene u okvir za izbor. Utori za novčiće 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 koristeći Arduino. To će biti najbolji hobi projekti za djecu. Počnimo
Arduino: Frustrirajuće umjetničko vozilo za više igrača: 13 koraka
Arduino: Frustrirajuće umjetničko vozilo za više igrača: Ovo je umjetnički automobil koji je već dostupan sa bluetooth-om jer je pametni telefon i servo uređaj dostupan u najboljem redu. Optioneel je sve što vam je potrebno/ frustrirano da napravite vrata za gebruiker vrata ako ste zorgen da servo i
Arduino pong za više igrača- Ako ovo, onda ono: 5 koraka
Arduino Singleplayer Pong-Ako je ovo, onda ono: Dit arduino projekt je gebaseerd na dva 2 speng pong projekta na uputstvima (https: //www.instructables.com/id/Portable-Arduino-a …) maar dit projekt je pojedinačni igrač sa jednostavnom AI.Odgovoreno: Arduino Uno Nokia 5100 scherm. https: // ww