Enkel enhetskontroller: 5 trinn
Enkel enhetskontroller: 5 trinn
Anonim
Enkel enhetskontroller
Enkel enhetskontroller

Beskrivelse

Dette prosjektet er en veldig enkel kontroller som kan gi input til Unity når jeg trykker på knappene jeg designet den for å kontrollere et spill jeg laget der spilleren kan gå til venstre og høyre. Selvfølgelig kan du alltid justere den for flere kontroller. Det er ikke nødvendig å bruke noen ekstra biblioteker.

Trinn 1: Materialer

Komponenter som trengs

  • -Arduino 2x motstand
  • -[~ 220 Ohm
  • -Ledninger
  • -2x knapper
  • -Brødbrett

Trinn 2: Breadboarding

Breadboarding
Breadboarding

Jeg begynte med å koble arduino GND-porten til en negativ (-) pinne på venstre side av brødbrettet, og koble 5V til en positiv (+) på høyre side av brødbrettet.

Etter det satte jeg knappene på stedet jeg ville ha mto. Og koblet dem til med ledningene og motstandene.

Trinn 3: Koding av Arduino

Først av alt må du skrive noen kode for at Arduino skal kjøre. Jeg legger kommentarer i koden som forklarer hva den gjør.

// Angi pins som knappene er koblet til.

const int buttonPin1 = 3; const int buttonPin2 = 4;

ugyldig oppsett ()

{// Start serien Serial.begin (9600); // Konfigurer pinnene som utgang. pinMode (buttonPin1, INPUT); pinMode (buttonPin2, INPUT); }

hulrom ()

{// Les statusen til knappen hvis (digitalRead (buttonPin1) == HIGH) {// skriv ut denne linjen hvis tilstanden er HIGH. Serial.println ("Venstre"); forsinkelse (20); } if (digitalRead (buttonPin2) == HIGH) {// skriv ut denne linjen hvis tilstanden er HIGH. Serial.println ("Høyre"); forsinkelse (20); }}

Trinn 4: Samhold

Hvis du ikke har et spill klart, vil denne koden fungere på ethvert spillobjekt i enhet.

Hvis dette er tilfellet trenger du et spillobjekt for å flytte.

For enkelhets skyld vil vi lage en kube ved å gå til GameObject-> 3D Object-> Cube

Når kuben er i scenen din, velg den og trykk på Legg til komponent -knappen, og opprett nytt skript.

Du må også endre Api -kompatibilitetsnivået for at System. IO. Ports -biblioteket skal fungere.

For å gjøre dette, gå til Rediger-> Prosjektinnstillinger-> Spiller

bla nedover i denne menyen til du finner Api -kompatibilitetsnivået og velg. NET 2.0 i stedet for. Net 2.0 -delsett

Du er nå klar til å begynne å kode.

bruker System. Collections; bruker System. Collections. Generic; bruker UnityEngine; bruker System. IO. Ports;

offentlig klasse PlayerMovement: MonoBehaviour

{offentlig flytehastighet; flytebevegelse;

SerialPort sp = ny SerialPort ("COM3", 9600);

ugyldig start ()

{// Kjør koden for å åpne den serielle porten OpenSerialPort (); }

ugyldig OpenSerialPort ()

{// Åpne den serielle porten sp. Open (); sp. ReadTimeout = 1; }

ugyldig bevegelse (strengretning)

{// Sjekk hvilken retning arduinoen har gitt videre hvis (Retning == "Venstre") {bevegelse = -1; } hvis (Retning == "Høyre") {movement = 1; } // beregne mengden som gameobjectet skal flyttes float translation = bevegelse * hastighet; // Bruk bevegelsen på gameobject transform. Translate (oversettelse, 0, 0); }

ugyldig oppdatering ()

{if (sp. IsOpen) {try {// mens serieporten er åpen, kjør bevegelsesfunksjonen og passerer linjen som Arduino skriver ut Movement (sp. ReadLine ()); } catch (System. Exception) {

}

}

} }

Trinn 5: Sluttnotater

Sjekk om komponentene dine fungerer

Et problem jeg oppdaget under opprettelsen av dette var at alle ledninger og kode var riktige og det burde ikke være noe problem i det hele tatt, men det fungerte ikke. I mitt tilfelle var det en ledning som ikke fungerte, selv om det samme kan skje med noen av de andre komponentene dine.

Anbefalt: