Innholdsfortegnelse:

Enkel enhetskontroller: 5 trinn
Enkel enhetskontroller: 5 trinn

Video: Enkel enhetskontroller: 5 trinn

Video: Enkel enhetskontroller: 5 trinn
Video: New World Devs Respond to Client Side Authoritative Accusations 2024, Juli
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: