Sisukord:
- Tarvikud
- Samm: seadistage mängu piirid
- 2. samm: tahvlite lisamine ja kontrollerite tegemine
- Samm: ühendage Arduino jadapordiga
- Samm: Unity ühendamine jadapordiga
- Samm: palli lisamine
- 6. samm: mängu lõplik vormistamine
Video: Kuidas teha mitme mängijaga mängu Arduino kontrolleritega: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Kas olete kunagi mõelnud, kuidas mängude arendajad loovad hämmastavaid mänge, mida inimesed kogu maailmas naudivad? Täna annan teile selle kohta vaid väikese vihje, tehes väikese mitme mängijaga mängu, mida hakkab juhtima kas teie tehtud Arduino kontroller. Niisiis, alustame.
Tarvikud
Sa vajad:
- Sülearvuti
- Unity mootor
- C# IDE, mis töötab Unityga, näiteks visuaalstuudio või Atom. (Ma kasutan Visual Studio koodi)
- 2x Arduino Nano
- 2X suur leivalaud
- 2X väike leivalaud
- 4X tack -lüliti (nupp)
- 4X 200Ω takisti
- 12X isast meessoost džemprijuhtmed
- Arduino IDE
See on abiks, kui teil on põhiteadmised Unity kasutamise kohta, kuid see ei mõjuta teie edusamme, kuna saate sellega mängu tegemise ajal tuttavaks.
Link Unity Engine'i allalaadimiseks:
store.unity.com/download-nuo
Link Visual Studio koodi IDE allalaadimiseks:
code.visualstudio.com/download
Link Arduino IDE allalaadimiseks:
www.arduino.cc/en/Main/Software
Samm: seadistage mängu piirid
Kõigepealt peate alla laadima unity
Kui see on tehtud, võite hakata oma mängu vaadet seadistama.
Avage uus Unity projekt, pange sellele nimi ja valige 2D mäng.
Kui projekt avaneb, pange tähele, et seal on 3 peamist jaotist
- Hierarhia (siia lisatakse kõik teie mänguobjektid ja üksikasjad).
- Stseen (kus seadistate mängu vaate).
- Mäng (kus saate proovida, kuidas päris mäng läheb).
Pange tähele, et hierarhia all on teie stseen ja stseeni all on „peamine kaamera”. Kui valite kaamera hierarhiast, valitakse see stseenis
(Kõik, mis jääb selle kaamera piiresse, kuvatakse päris mängus).
Vaata pilti 1
Meie mäng koosneb kahest lauast, pallist, mis liigub ringi, ja piiridest, mis piiravad laudade ja palli liikumist.
Alustame piiride loomisega.
- Uue mänguobjekti loomiseks valige Varad> Loo> Sprites> ruut (pange sellele nimi „parem ja vasak äär”) Vaadake pilti 2
- Lohistage parem- ja vasakpiir hierarhiasse ning stseenile ilmub ruut.
- Reguleerige selle x -telje asendiks (5) “parem ja vasak äär”> inspektor> teisendamine> asend> X. Vaata pilti 3
- Seejärel reguleerige selle skaalat nii, et see oleks piisavalt suur, et katta kaamera piire (lohistage ruudu ülemist ja alumist külge, et seda venitada).
- Reguleerige selle värvi "paremalt ja vasakult ääristelt"> inspektor> sprite render> värv. Vaata pilti 3
- Kerige inspektoris alla ja valige Lisa komponent, seejärel tippige Rigidbody2D ja vajutage sisestusklahvi. See lisab põhimõtteliselt teie mänguobjektile füüsika, kuna see annab sellele massi, raskusjõu ja kokkupõrke tuvastamise. Kuid me ei vaja oma mängus raskusjõudu, nii et tehke gravitatsioon 0 -ks. Samuti peate külmutama positsiooni ja pöörlemise, nii et piir kokkupõrke korral ei liiguks. Vaata pilti 4
- valige lisa komponent, seejärel tippige Box Collider 2D ja vajutage sisestusklahvi, et lisada mänguobjekti ümber ala, kus saab tuvastada kokkupõrkeid. Vaata pilti 4
- Nüüd valige parem ja vasak äär ning vajutage (ctrl+d) selle kopeerimiseks.
- Nimetage see ümber „vasakuks piiriks” ja nimetage esimene ümber („parem ääris”).
- Valige vasak äär ja reguleerige selle x-telje asend samamoodi (-5) sammuga 3. Nüüd on teil parem- ja vasakääris.
Korrake eelnevaid 10 sammu üles- ja allapoole ning muutke ruudu y -asendit x -positsiooni asemel. Viimane eelvaade peaks olema midagi sarnast pildil olevaga.
Vaata pilti 5
2. samm: tahvlite lisamine ja kontrollerite tegemine
Laudade lisamine
Tehke uus mänguobjekt ja nimetage see mängijaks 1.
Reguleeri:
- Skaala: X (1,2), Y (0,15), Z (1)
- Asend: X (0), Y (-3,6), z (0)
- Lisage BoxCollider2D
- Lisage Rigidbody 2D ja külmutage y- ja z -teljed.
Kopeerige (ctrl+d) ja nimetage koopiamängija ümber 2.
Reguleeri:
- Skaala: X (1,2), Y (0,15), Z (1)
- Asend: X (0), Y (3.6), z (0)
- BoxCollider on juba kohal.
- Rigidbody 2D on juba olemas ja y- ja z -teljed on juba külmunud.
Vaata pilti 1
Kontrollerite valmistamine
Sa vajad:
- 2x Arduino Nano
- 2X suur leivalaud
- 2X väike leivalaud
- 4X tack -lüliti (nupp)
- 4X takisti
- 12X isast meessoost džemprijuhtmed
Nüüd vaadake leivatahvli fotosid ja kaardistamist juhtkangi kokkupanekuks.
- Kinnitage üks Arduino Nano kiip väikese leivalauaga.
- kinnitage suurele leivalauale 2 tõmbelülitit, nagu pildil näidatud. Püüdke hoida leivalaua parem külg sümmeetriline vasaku käega, kuna see muudab juhtkangi paremaks (sümmeetriana saate kasutada 30. veergu) rida)
- Ühendage vasaku nupu ülemine vasak tihvt väikese leivalaual oleva Arduino 5V tihvtiga (asjad, mis on ühendatud leivalaua sama veeruga, on omavahel ühendatud).
- Ühendage parema nupu ülemine parem tihvt Arduino 5V pistikuga.
- Ühendage takisti abil vasaku nupu alumine parem tihvt 31. veeru punktiga.
- Ühendage takisti abil parema nupu alumine vasak tihvt 29. veeru punktiga.
- Ühendage takistid Arduino GND tihvtiga.
- Ühendage vasaku nupu ülemine parem tihvt Arduino D3-tihvtiga.
- Ühendage parema nupu vasak ülemine tihvt Arduino D9 tihvtiga.
- Nüüd korrake neid samme ja tehke teine kontroller.
Samm: ühendage Arduino jadapordiga
Esiteks peate installima Arduino IDE.
Kui need on installitud, saate alustada Arduino programmi loomisega, mis võtab nuppudelt sisendid vastu ja salvestab need jadaporti (COM -port). Kui teie sülearvutiga on ühendatud Arduino plaat, tuvastab operatsioonisüsteem plaadi automaatselt jadapordina, kuhu saab programme üles laadida. Jadaporti salvestatud väärtusi saab kasutada järgmises etapis, kui ühendame Unity Engine'i jadapordiga.
Nüüd ühendame Arduino jadapordiga.
Vaata pilte
- Ühendage Arduino sülearvutiga
- Tööriistad> Tahvel> Arduino Nano
- Kui teie Arduino kiip on hiljuti (2018-2020) Tööriistad> Protsessor> ATmega328P (vana alglaadur).
- Kui teie Arduino kiip pole hiljutine (enne 2018. aastat) Tööriistad> Protsessor> ATmega328P
- Tööriistad> Port> COM (ükskõik milline number ilmub, minu puhul on see 10). * See on jadaport, kuhu väärtused salvestatakse.
- Kopeerige kood ja kleepige see Arduino IDE -sse ning vajutage programmi üleslaadimiseks klahve ctrl+u.
- Korda teise Arduinoga. (5. sammu tehes valige kindlasti teine COM -port, nii et mõlemad kontrollerid ei oleks ühendatud sama jadapordiga).
Kood:
tühine seadistus () {
Seriaalne algus (9600); pinMode (3, INPUT); // Ütlemine Arduinole, et ta võtaks sisendi vastu pin D3 pinMode (9, INPUT); // Ütlemine Arduinole, et ta võtaks sisendi vastu tihvti D9} void loop () {if (digitalRead (3) == 1) { /* Kui Arduino saab sisendi 1 Serial.write (1); kontaktist 3 Väljundi väärtus 1 jadaporti Serial.flush (); */ viivitus (2); } if (digitalRead (9) == 1) { /* Kui Arduino saab sisendi 1 Serial.write (2); pin 9 -st Väljundväärtus 2 jadapordile Serial.flush (); */ viivitus (2); }}
Programmi selgitus:
See kood võtab lihtsalt sisendi nuppudega ühendatud D3 ja D9 tihvtilt Arduinos. Nupud on kas vajutatud või alla vajutamata, mis tähendab, et nendelt võetud näidud on kas 1 (vajutatud) või 0 (vajutamata). Kui parempoolse nupu (alates D9) sisend on 1 (vajutatud), salvestage jadaporti väärtus 1. Kui vasaku nupu (D3) sisend on 1 (vajutatud), salvestage jadaporti väärtus 2.
Samm: Unity ühendamine jadapordiga
Selle sammu jaoks tuvastame Unity jadapordi, et see saaks nuppude vajutamisel Arduino sisendeid vastu võtta. Installige oma sülearvutisse Visual Studio Code. Seejärel minge Unity juurde, valige hierarhiast mängija 1, kerige alla ja valige Lisa komponent ja tippige player1_motion, seejärel vajutage sisestusklahvi. Vaata pilti 1
Inspektorisse luuakse skript C#, paremklõpsake seda ja valige käsku redigeeri, visuaalne stuudio kood peaks avanema ja kuvama vaikekoodi, mis näeb välja nagu pilt 2.
Kopeerige järgmine kood ja muutke "SerialPort sp = new SerialPort (" COM10 ", 9600);" koos SerialPortiga sp = uus SerialPort ("COM -port, millega teie Arduino on ühendatud", 9600); tema leidmiseks minge tagasi oma Arduino koodi juurde ja valige goning Tools> Port> COM (ükskõik milline number ilmub).
Kood:
kasutades System. Collections;
kasutades System. Collections. Generic; UnityEngine'i kasutamine; kasutades System. IO. Ports; avaliku klassi mängija1_motion: MonoBehaviour {ujuki kiirus = 8; privaatne ujuk amounttomove; SerialPort sp = uus SerialPort ("COM10", 9600); // Start kutsutakse enne esimest kaadri värskendamist tühine Start () {sp. Open (); sp. ReadTimeout = 1; } // Värskendust kutsutakse üks kord kaadri kohta tühjaks Update () {amounttomove = speed*0.01f; if (sp. IsOpen) {try {moveObject (sp. ReadByte ()); print (sp. ReadByte ()); } catch (System. Exception) {}}} void moveObject (int suund) {if (suund == 1) {transform. Translate (Vector3.left*amounttomove, Space. World); } if (suund == 2) {transform. Translate (Vector3.right*amounttomove, Space. World); }}}
Koodi selgitus:
See kood ütleb ühtsusele, et saada sisendeid jadaportist (COM 10). Kui vajutada vasakpoolset nuppu, saadab Arduino jadaporti väärtuse 1, kui ühtsus saab jadaportist 1, lisatakse mänguobjektile "mängija 1" kiirus vasakus suunas. Õige nupu vajutamisel saadab Arduino jadaporti väärtuse 2, kui ühtsus saab jadaportist 2, lisatakse mänguobjektile "mängija 1" kiirus õiges suunas. kui jadaport ei saa jadaportist väärtust, ei lisata kiirust kummaski suunas, seega jääb plaat paigal.
Pärast koodi kopeerimist vajutage koodi loomiseks ja käitamiseks F5. Minge tagasi ühtsusesse ja vajutage esitusnuppu, mängija 1 peaks paremale vajutamisel liikuma paremale ja vasakule vajutades vasakule.
Nüüd tehke samu toiminguid veel kord, kuid mängija 2 puhul ja kirjutage kindlasti mängija1_motion asemel lahtrisse „Lisa komponent” player2_motion ja tuvastage teine COM -port, millega teine kontroller on ühendatud, mitte sama jadaport.
Samuti peate koodis muutma „public class player1_motion: MonoBehaviour” väärtuseks „public class player2_motion: MonoBehaviour”.
Samm: palli lisamine
- Lisage uus mänguobjekt, kuid seekord valige ruudu asemel ring.
- Nimeta see ümber "palliks".
- Lohistage hierarhias.
- Reguleerige skaalat (X: 0,2 - Y: 0,2 - Z: 0,2).
- Lisage 2D jäik keha ja külmutage ainult Z -telg.
- Muutke mass 0,0001 -le
- Muutke gravitatsiooniskaala väärtuseks 0.
- Lisage Box Collider 2D.
- Avage Varad> Loo> Füüsikaline materjal 2D Vaadake pilti 1
- muutke selle nimi "põrgatama"
- Muutke kontrollija hõõrdumine nulliks
- Muutke kontrollijalt põrkeväärtus väärtuseks 1
- Lohistage "põrge" Rigidbody 2D -sse> Materjal Vaadake pilti 2
- Valige hierarhiast uuesti "pall" ja minge komponendi lisamiseks, tippige Ball_movement ja vajutage sisestusklahvi.
- Paremklõpsake skripti ja valige käsu Muuda skripti.
- Kopeerige allolev kood ja vajutage selle loomiseks ja käivitamiseks klahvi F5.
Kood:
kasutades System. Collections;
kasutades System. Collections. Generic; UnityEngine'i kasutamine; public class Ball_movement: MonoBehaviour {// Start kutsutakse enne esimest kaadri uuendamist private float force = 2; tühine Start () {StartCoroutine (move ()); } IEnumerator move () {tootlus tagastab uue WaitForSeconds (2); GetComponent (). AddForce (uus Vector2 (1f, 0,5f)*0,02f*jõud); }}
Koodi selgitus
See kood annab pallile sama suurusega kiiruse mõlemas suunas X ja Y suunas, mis paneb palli liikuma 45 ° nurga all. 8. etapis lisasime pallile füüsikamaterjali ja muutsime selle põrkumist, see säilitab palli liikumise kogu mängu vältel.
6. samm: mängu lõplik vormistamine
Nüüd peame mängu kaotama panema. Mängu juhtides märkate, et kui pall möödub mängijast 1 või mängijast 2, siis põrkab see lihtsalt piirilt maha ja see pole täpselt see, mida me oma mängus vajame. Selle asemel tahame teha tulemuste loenduri, mis loeb skoori iga kord, kui pall põrkub kas üles- või allapoole, ning lähtestada palli positsiooni.
- Lohistage pall hierarhiast projekti, looge pallist eelvalmis, et saaksite seda hiljem kasutada.
- Paremklõpsake hierarhiat ja valige Loo tühi. ilmub tühi objekt, nimetage see ümber palli ümberkujundamiseks ja muutke oma positsiooni samaks kui palli asukoht.
- Paremklõpsake hierarhiat ja valige UI >> Tekst. Pange tähele, et tekstiga kaasneb lõuend, teksti asukoht mängus sõltub teksti positsioonist lõuendil, mitte meie mängu piirides. (Vaata pilti 1).
- Muutke teksti asukoht soovitud kohta.
- Teise mängija skoori jaoks korrake samme 3 ja 4 uuesti.
- Sisestage esimene tekst "Mängija 1 skoor: 0" ja sisestage teine tekst "Mängija 2 skoor: 0". (Vaata pilti 2).
- Looge ülemises servas skript nimega p1wins ja kopeerige järgmine kood.
Kood:
kasutades System. Collections;
kasutades System. Collections. Generic; UnityEngine'i kasutamine; kasutades UnityEngine. SceneManagement; kasutades UnityEngine. UI; public class p1wins: MonoBehaviour {public Text score; public Transform ball_respawn; avalik GameObject pall; privaatne int p1 = 0; // Start kutsutakse enne esimest kaadri värskendamist tühine Start () {} // Värskendust kutsutakse üks kord kaadri kohta tühine Update () {score.text = "Mängija 1 skoor:" + p1; } tühine OnCollisionEnter2D (kokkupõrke2D muu) {if (other.gameObject.tag == "Ball") {Destroy (other.gameObject); p1 ++; Instantiate (pall, ball_respawn.positsioon, ball_respawn.rotation); }}}
8. Pukseerige palli eelpaneel 1. etapis olevast projektist Ball parameetrisse. (Vaata pilti 3)
9. Lohistage pall hierarhiast ümberkujundatud pallile Ball-rerspawn parameetrisse. (Vaata pilti 3)
10. lohistage mängija 1 skoor hierarhiast Score parameetrisse. (Vaata pilti 3)
Koodi selgitus:
Kui pall põrkub ülemise äärega, hävitab see ja taastub uuesti positsioonis ball_respawn, mille määrasime 2. etapis. Palli kokkupandavaks muutmise eesmärk on see, et saaksime selle kõikide omadustega uuesti üles panna, vastasel juhul, kui kasutasime palli hierarhiast taastub, kuid ei liigu. Ka siis, kui pall põrkub ülemise äärega, suureneb väärtus, mis on algselt 0 ja mida nimetatakse p1 -ks. See väärtus kuvatakse tekstina, nii et kui pall põrkub ülemise äärisega, suureneb mängija 1 tulemus 1 võrra.
Nüüd tehke alumise piiri jaoks samme 7, 8, 9 ja 10
7. sammu jaoks looge skript nimega p2wins ja kopeerige selle asemel järgmine kood.
10. sammu jaoks lohistage mängija 2 skoor hierarhiast Score parameetrisse.
Kood:
kasutades System. Collections;
kasutades System. Collections. Generic; UnityEngine'i kasutamine; kasutades UnityEngine. SceneManagement; kasutades UnityEngine. UI; public class p2wins: MonoBehaviour {public Text skoor; public Transform ball_respawn; avalik GameObject pall; privaatne int p2 = 0; // Start kutsutakse enne esimest kaadri värskendamist tühine Start () {} // Värskendust kutsutakse üks kord kaadri kohta tühine Update () {score.text = "Mängija 2 skoor:" + p2; } tühine OnCollisionEnter2D (kokkupõrke2D muu) {if (other.gameObject.tag == "Ball") {Destroy (other.gameObject); p2 ++; Instantiate (pall, ball_respawn.positsioon, ball_respawn.rotation); }}}
Soovitan:
Löö nupuga mitme mängijaga: 4 sammu
Löö nupuga mitme mängijaga mäng: Mäng nagu Whack-a-Mole. Kasutades valgusdioode ja nuppe. On 2 režiimi:-Üksikmäng-mitme mängijaga ühe mängija režiim, on 3 taset: LEVEL_1: 1 diood 1 sekundiks LEVEL_2: 2 dioodi 1 sekund LEVEL_3: 2 dioodi 0,7 sekundiks ja multipordi jaoks
Kuidas teha kahe mängijaga DIY Bartopi arkaadi kohandatud telkide mündipesadega, kasutades Pandora kasti: 17 sammu (piltidega)
Kuidas teha kahe mängijaga isetegija Bartop Arcade'i kohandatud telkimüntide pesadega, kasutades Pandora kasti: See on samm -sammult õpetus kahe mängijaga ülemise arkaadimasina ehitamiseks, millel on kohandatud mündipesad. Mündipesad tehakse nii, et need aktsepteerivad ainult veerandite ja suuremaid münte. See arkaad on toitega
Kuidas teha CMD -mängu! Tasuta allalaadimine ja koodi koopia!: 6 sammu
Kuidas teha CMD -mängu! Tasuta allalaadimine ja koodikoopia !: Tegin selle hämmastava CMD/BATCH mängu Tasuta allalaadimine ja koodikoopia
Arduino: Masendav mitme mängijaga kunstiauto: 13 sammu
Arduino: Masendav mitme mängijaga kunstiauto: see on kunstiauto, mis on loodud nutitelefoni Bluetooth-i ja teenusepakkujaga. Optioneel is om het chaotisch/ frustrerend te maken voor de gebruiker door er voor te zorgen dat de servo i
Kuidas teha vanavanemate kalendrit & Külalisteraamat (isegi kui te ei tea, kuidas külalisteraamatut teha): 8 sammu (piltidega)
Kuidas teha vanavanemate kalendrit & Külalisteraamat (isegi kui te ei tea, kuidas külalisteraamatut teha): see on väga ökonoomne (ja väga tänuväärne!) Puhkusekink vanavanematele. Ma tegin sel aastal 5 kalendrit hinnaga vähem kui 7 dollarit. Materjalid: 12 suurepärast fotot teie lapsest, lastest, õetütardest, vennapoegadest, koertest, kassidest või muudest sugulastest12 erinevat tükki