Inhaltsverzeichnis:
- Schritt 1: Anschließen der Steuertasten an Arduino
- Schritt 2: Codierung des Arduino Leonardo:
- Schritt 3:
- Schritt 4:
- Schritt 5:
- Schritt 6:
- Schritt 7:
- Schritt 8: Bewegung in Unity codieren:
- Schritt 9:
- Schritt 10:
- Schritt 11:
- Schritt 12:
- Schritt 13:
- Schritt 14: Anschließen von Lichtern an Arduino
- Schritt 15: Codieren des Arduino Uno
- Schritt 16:
- Schritt 17:
- Schritt 18: Kodierungslichter Einheitsseite:
- Schritt 19:
- Schritt 20:
- Schritt 21:
- Schritt 22:
- Schritt 23:
- Schritt 24:
Video: Arduino Game Controller mit Lichtern, die auf Ihr Unity-Spiel reagieren
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Zuerst habe ich diese Sache in Wort geschrieben. Dies ist das erste Mal, dass ich instructable verwende, also wenn ich sage: Schreiben Sie Code wie so wissen, dass ich mich auf das Bild oben in diesem Schritt beziehe.
In diesem Projekt verwende ich 2 Arduinos, um 2 separate Code-Bits auszuführen, da ich einige Probleme hatte, es mit nur einem zum Laufen zu bringen
Das sind die Uno und die Leonardo
Insgesamt ist dies das, was Sie für dieses Projekt benötigen.
· 7 Drucktasten
· 23 Überbrückungsdrähte
· 1 Arduino Leonardo + USB-Kabel
· 4 Widerstände · 4 LEDs
· 1 Arduino Uno + USB-Kabel
· 2 Steckbretter
Schritt 1: Anschließen der Steuertasten an Arduino
Was Sie benötigen, um dieses Teil anzuschließen:
· 7 Drucktasten
· 14 Überbrückungsdrähte
· 1 Arduino Leonardo + USB-Kabel
· Steckbrett
Die Schaltflächen sind ziemlich einfach anzuschließen, können jedoch schnell zu einem Durcheinander werden, wenn sie in Bildform angezeigt werden.
· Platzieren Sie zuerst die Druckknöpfe in den Positionen, die ich oben im Bild markiert habe.
· Zweitens möchten Sie einen Jumper vom Erdungsschlitz des Arduino Leonardo in die Minusreihe des Steckbretts stecken.
· Jetzt verbinden Sie die Jumper von überall in der Minusreihe mit der Reihe, die mit dem rechten Stift Ihres Druckknopfes übereinstimmt. das wird ihm Strom zuführen.
· Als nächstes möchten Sie ein Überbrückungskabel aus einer Reihe, die mit dem linken Pin Ihres Tasters übereinstimmt, an die digitalen Eingangssteckplätze des Leonardo anschließen. Für die Tasten hier habe ich Slot 2 - 3 - 4 - 5 - 6 - 7 - 8. verwendet
Ich habe nur den Draht gezeigt, der auf dem Bild zu Eingang 8 geht, weil es ein sehr unordentliches Bild wird, um Ihnen alle Drähte zu zeigen, die sich kreuzen.
Schritt 2: Codierung des Arduino Leonardo:
Um Ihnen den Grund zu sagen, warum ich Leonardo dafür verwende. Da es einen bestimmten Chip hat, den der Uno nicht hat, erkennt der Computer ihn als USB-Eingabegerät. Ähnlich wie bei einer Tastatur. Was uns erlaubt, etwas zu tun, das unser Leben als Programmierer für dieses Projekt um einiges einfacher macht. Tastaturemulation. Wir werden den Computer dazu bringen, zu denken, dass wir bestimmte Tasten auf der Tastatur drücken, während wir tatsächlich Tasten auf unserem Controller drücken.
Jetzt werde ich Sie Schritt für Schritt durch den Code führen.
Ganz oben schließen wir zuerst Keyboard.h ein. Dadurch können wir die Tastaturfunktionen verwenden, die wir in unserem Code verwenden werden.
Schritt 3:
Dann müssen wir die digitalen Eingangssteckplätze definieren, die wir auf dem verwenden werden
Leonardo für jeden Knopf.
Ich habe auch jeden von ihnen nach dem Schlüssel benannt, den ich emulieren werde.
Schritt 4:
Von dort gelangen wir in die Setup-Funktion. Das sagt dem
arduino, was es beim Start macht.
Zuerst schreiben wir Serial.begin, das den seriellen Port öffnet und die Datenrate auf 9600 bps setzt
und wir definieren, dass alle Pins als Eingänge bezeichnet werden.
Schritt 5:
Und schließlich schreiben wir unsere Schleifenfunktion, die prüft, ob
Tasten werden gedrückt und sagen dem Arduino, wie er darauf reagieren soll.
Zuerst schreiben wir Keyboard.begin, das arduino mitteilt, dass er mit Tastaturfunktionen auf uns aufpassen muss
Schritt 6:
Dann schreiben wir für jede Schaltfläche eine if/else-Anweisung, die so aussieht
Also, was ich arduino hier gesagt habe, ist: Wenn meine linke Taste auf dem Controller gedrückt wird, lassen Sie den Computer denken, dass wir die Taste "a" drücken, und wenn dies nicht der Fall ist, denken Sie, dass wir die Taste losgelassen haben.
Sie wiederholen diesen Codeblock im Grunde für jede Taste auf Ihrem Controller. mit Änderungen für jede Variable und den Schlüsseln, die die Variable emulieren muss
Schritt 7:
Die Tasten, die wir dem Computer gesagt haben, sind W – A – S – D, was
sind so ziemlich der Standard für die Bewegung in PC-Spielen und E – Q – und die Leertaste, die in diesem Code als „ “erkannt wird, das sind die Tasten, die ich zum Aufnehmen verwende – verwerfen und in meinem Spiel feuern. Fühlen Sie sich frei, diese in die Tasten zu ändern, die Ihrer Meinung nach für Ihr Spiel / Ihren Controller besser funktionieren.
Schließlich sagen wir dem Arduino, dass er die Überprüfung stoppen soll, welche Keyboard.end
Schritt 8: Bewegung in Unity codieren:
Lassen Sie mich Ihnen zuerst sagen, dass ich das für ein 2D-Spiel mache, also
die Beispiele, die Sie sehen werden, sind dafür gebaut. Hauptsächlich bedeutet, dass ich Vektor2 verwende, wenn Sie in 3D arbeiten, verwenden Sie Vektor3. weil Sie sich um eine zusätzliche Dimension der Bewegung in 3D kümmern müssten.
Der Grund, warum ich die Tastaturemulation auf der Arduino-Seite verwendet habe, ist, dass Unity etwas eingebaut hat, um Tasten auf der Tastatur zu erkennen, die wir verwenden können.
Wenn Sie Ihr Projekt in Unity öffnen, gehen Sie zu Bearbeiten -> Projekteinstellungen -> Eingabe. Sie können in Ihrem Inspektor sehen, dass der Eingabemanager gestartet wird. Wenn Sie auf Achsen klicken, können Sie eine ganze Reihe von Eingabenamen sehen, die normalerweise für PC-Controller wie die, die wir jetzt machen, verwendet werden. Die beiden Eingänge, die wir verwenden werden, sind Horizontal und Vertikal, die überprüfen, ob Sie es erraten haben W-A-S-D.
Zuerst möchten Sie ein Objekt in Ihrer Einheitsszenenhierarchie erstellen, das Ihr Spieler sein wird. In meinem Fall dieser lustige kleine Kerl. Das kann alles sein, was Sie brauchen, aber für mein Spiel habe ich diesen Kerl gemacht.
Schritt 9:
Sie möchten diesem Spieler 2 Dinge geben. Ein Boxcollider 2d und
a Rigidbody 2d und bearbeiten Sie sie wie im Bild oben.
Schritt 10:
Dann möchten Sie in Ihren Projektordner gehen und ein
C#-Skript. Welche ich PlayerMovement genannt habe.
In diesem Skript werden Sie 2 Variablen definieren. Ein öffentlicher Schwimmer, den ich moveSpeed nenne. Welche bestimmt, wie schnell du fährst. Und einen privaten Rigidbody2D, den ich RigidPlayer nenne. Welches wird für Ihre Spieler starre Körper suchen.
Vergessen Sie nicht, zu Ihrem Unity-Editor zu gelangen, klicken Sie auf Ihren Player, fügen Sie dieses neue Skript hinzu, indem Sie es in den Inspektor ziehen und einen Zahlenwert für moveSpeed festlegen.
Schritt 11:
Jetzt möchten Sie in Ihrem Start() eine Sache tun und das ist zu
Stellen Sie sicher, dass Ihr RigidPlayer Ihren Payer Rigidbody 2d finden kann. Das machst du mit der folgenden Codezeile:
Schritt 12:
Dann gehen wir zu update() über. Hier gehen wir hin
um den Spieler zu bewegen.
Wir machen das mit einer ziemlich einfachen if-Anweisung, die die negativen und positiven Tasten von Horizontal (AD) und Vertikal (SW) betrachtet und diese als Zahl anwendet, um zu erzwingen, dass wir unseren Starrkörper 2d aufsetzen, um unseren Spieler hineinzuschieben eine Richtung. Diese Zahl wird mit der Variable moveSpeed multipliziert.
Schritt 13:
Schließlich möchten Sie sicherstellen, dass sich Ihr Player nicht mehr bewegt, wenn
du drückst nichts. Das gefällt dir so:
Wenn Sie nun Ihre 3 anderen Schaltflächen für alles verwenden möchten, tun Sie dies mit dieser if-Anweisung: if(Input. GetKeyDown(Keycode. Space))
für die Leertaste und setzen Sie anstelle des Leerzeichens den Buchstaben der anderen Tasten, die Sie für die anderen Tasten gewählt haben.
Schritt 14: Anschließen von Lichtern an Arduino
·
Was Sie benötigen, um dieses Teil anzuschließen:
· 9 Überbrückungsdrähte
· 4 Widerstände
· 4 LEDs
· 1 Arduino Uno + USB-Kabel
· Steckbrett
Der Anschluss für die Lichter erfolgt über das Uno.
Es wird am Ende wie dieses Bild oben aussehen:
Sie schließen die Widerstände an die lange Seite der LEDs an. Und dann schließen Sie einen Jumper von einer digitalen Pinnummer am Uno an die Widerstände an. In diesem Fall habe ich die digitalen Steckplätze 9 – 10 -11 -12 verwendet. Diese Zahlen sind relevant, wenn wir zum Code für die Lichter gelangen.
Von dort aus möchten Sie einen Jumper vom Bodensteckplatz Ihres Arduino Uno an die Stelle auf Ihrem Board anschließen, wie mit dem schwarzen Kabel auf dem Bild oben zu sehen.
Dann möchten Sie 4 Jumper haben, die alle in das kurze Ende jeder LED führen
Schritt 15: Codieren des Arduino Uno
Okay, zuerst werden wir unsere Variablen noch einmal definieren
Also zuerst, welche digitalen Eingänge wir für unsere Leuchten verwenden. Und wir werden ein Zeichen namens myCol erstellen[20]
Schritt 16:
Dann wollen wir im Setup den Serial.begin erneut durchführen. Setzen Sie alle unsere LEDs auf den Ausgang und schalten Sie sie alle beim Start aus.
Schritt 17:
Und schließlich möchten Sie Ihre Schleifenfunktion schreiben.
Dadurch liest der Arduino alle Daten ein, die über seriell eingehen, bis eines von zwei Ereignissen eintritt. Entweder wird ein Zeilenvorschubzeichen erkannt; dies wird durch lf identifiziert, das auf 10 gesetzt ist und das erste Argument ist oder eine bestimmte Anzahl von Bytes eingelesen wurde. Dies ist das dritte Argument und wird in diesem Beispiel auf nur ein Byte gesetzt. Die Daten werden in der Variablen myCol gespeichert, die auf char und ein Limit von 20 gesetzt ist. In readBytesUntil ist dies das zweite Argument. Oder eine andere Möglichkeit, es zu erklären, ist Serial.readBytesUntil(terminatorCharacter, buffer, byteLimit);
Und die if-Anweisungen stellen sicher, dass bestimmte Lichter eingeschaltet werden, wenn Unity das Signal gibt. In diesem Fall habe ich 4 verschiedene farbige Lichter erhalten, damit ich Einheit g für das Einschalten der grünen LED, b für das Einschalten der blauen LED, r für das Einschalten der roten LED und y für das Einschalten der gelben LED senden kann.
Schritt 18: Kodierungslichter Einheitsseite:
Oke 2 Dinge zuerst, bevor wir darauf eingehen.
1. Gehen Sie in Ihrem Arduino-Codierprogramm zu Tool -> Port -> und überprüfen Sie, auf welcher COM Ihr Uno ist. In meinem Fall ist es COM3 (dies wird im Code wichtig sein)
2.in Unity Gehen Sie zu Bearbeiten -> Projekteinstellungen -> Player, klicken Sie dann im Inspektor auf andere Einstellungen, gehen Sie zu Api-Kompatibilitätsstufe und wechseln Sie von. NET 2.0-Subnetz zu nur. NET 2.0
Okay das ist erledigt. Lassen Sie uns darauf eingehen.
Klicken Sie mit der rechten Maustaste auf Ihre Hierarchie und klicken Sie auf Leer erstellen.
Dies ist ein leeres Spielobjekt, das nur in Ihrem Spiel existiert, um ein Skript für uns zu speichern. Ich habe dieses Objekt Init genannt.
Schritt 19:
Gehen Sie dann in die Registerkarte "Projekte" und erstellen Sie ein neues C#-Skript
und nenne es Senden.
Das erste, was Sie tun, ist, diese in die Zeilen in den using-Abschnitten Ihres Codes zu schreiben:
Verwenden von System. IO. Ports;
Verwenden von System. Threading;
Dadurch können wir die SerialPort-Variable verwenden
Schritt 20:
In diesem Skript werden wir die folgenden Variablen erstellen. Beachten Sie nun, dass ich COM3 dort habe. Dies kann für Sie anders sein, als wir zu Beginn dieses Schritts besprochen haben. Wenn dies der Fall ist, ersetzen Sie die 3 durch die Zahl, die für Sie angegeben wurde.
Schritt 21:
Am Anfang sagen wir, dass das zu verwendende Skript OpenConnection ist
Funktion, die wir gleich schreiben werden
Das Update ist eher ein Test als alles andere, aber wenn Sie es einschließen möchten, ist es zum Testen von Nachrichten, die an Unity gesendet werden. Kann man ehrlich ignorieren.
Schritt 22:
Oke jetzt für diese OpenConnection-Funktion. Das ist nur ein großes
if/else-Anweisung, die die Verbindung offen hält, kopieren Sie sie einfach wie geschrieben und Sie sollten in Ordnung sein.
Schritt 23:
Erinnern Sie sich jetzt an den Arduino-Code, nach dem ich gesucht habe
Signale, die Einheit an sie senden wird.
naja hier passiert das. In meinem Fall habe ich 4 Lichter angeschlossen, also habe ich 4 Funktionen geschrieben, die extrem einfach sind. Alles, was sie tun, ist, wenn sie angerufen werden, senden sie einen Brief an arduino. Wenn Arduino diesen Buchstaben erhält, leuchtet das Licht auf, das diesem Buchstaben entspricht.
Schritt 24:
Sie fragen sich vielleicht, wie ich es dazu bringe, das zu nennen
Funktion? Nun, Sie tun es mit einer einfachen Zeile in einem Ihrer anderen c#-Skripte, die Sie für Ihr Spiel verwenden. Sending. NameFunctionhere();. In meinem Spiel hat der Spieler beispielsweise die Aufgabe, 4 farbige Kugeln zu sammeln. Also habe ich ein kleines Skript geschrieben, das sicherstellt, dass er, wenn er sich einem nähert und den rechten Knopf drückt, ihn aufnimmt und dem Arduino das Signal sendet, dass in diesem Fall die gelbe Kugel aufgenommen wurde. Damit es weiß, muss ich die gelbe LED einschalten:
Sie können diese eine Codezeile an einer beliebigen Stelle platzieren. Wenn Sie möchten, dass es beim Start des Spiels aufleuchtet, geben Sie es in die Startfunktion ein. Möchte, dass es aufleuchtet, wenn er stirbt, setze es in deine Funktion für den Tod des Spielers. Experimentiere ein bisschen herum. Ich entscheide mich dafür, die Lichter zu einer Art UI-Element außerhalb des Spiels zu machen, um die Kugeln zu verfolgen, die Sie sammeln müssen, ohne den Bildschirm zu überladen.
Empfohlen:
So erstellen Sie Ihr eigenes WIFI-Gateway, um Ihr Arduino mit dem IP-Netzwerk zu verbinden? - Gunook
So erstellen Sie Ihr eigenes WIFI-Gateway, um Ihr Arduino mit dem IP-Netzwerk zu verbinden?: Wie so viele Leute denken Sie, dass Arduino eine sehr gute Lösung für die Heimautomatisierung und Robotik ist! Aber in Bezug auf die Kommunikation kommen Arduinos nur mit seriellen Verbindungen. Ich arbeite an einem Roboter, der permanent mit einem Server verbunden sein muss, auf dem ar
Passen Sie auf Ihr Backup auf! - Gunook
Achten Sie auf Ihr Backup!: Kurze Frage für jeden, der einen Computer verwendet: Wie viele von Ihnen sichern Ihre Dateien so oft, wie Sie sollten? Jeder, der gesagt hat, dass er es tut, hört auf zu lügen. Zweite Frage: Auf wie vielen Computern arbeiten Sie? Ich persönlich finde mich Bouncei
So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu. - Teil 1 - Hardware: 8 Schritte (mit Bildern)
So bauen Sie Ihr eigenes Anemometer mit Reed-Schaltern, Hall-Effekt-Sensor und einigen Schrott auf Nodemcu. - Teil 1 - Hardware: EinführungSeit ich mit dem Studium von Arduino und der Maker-Kultur begonnen habe, habe ich gerne nützliche Geräte aus Schrott- und Schrottstücken wie Kronkorken, PVC-Stücken, Getränkedosen usw. gebaut. Ich liebe es, eine Sekunde zu geben Leben für jedes Stück oder jeden Kumpel
Das Greenhouse Project (RAS): Überwachen Sie die Elemente, um auf unserer Plantage zu reagieren - Gunook
The Greenhouse Project (RAS): Überwachen Sie die Elemente, um auf unserer Plantage zu reagieren: Dieses Projekt schlägt vor, die Lufttemperatur, Helligkeit und Luftfeuchtigkeit sowie die Temperatur und Luftfeuchtigkeit im Hain zu überwachen. Es schlägt auch vor, diese Maßnahmen zu vernetzen, die auf der Website Actoborad.com so lesbar sindUm zu tun, verbinden wir 4 Sensoren mit dem N
Taschenformat: Nehmen Sie Ihr Büro auf Ihrem Telefon auf - Gunook
Taschenformat: Nehmen Sie Ihr Büro auf Ihrem Telefon auf: Waren Sie schon einmal unterwegs und haben festgestellt, dass Sie vergessen haben, einem wichtigen Kunden eine E-Mail zu senden? Hatten Sie jemals eine großartige Idee für ein instructable, während Sie die Straße entlang gingen, aber Sie hatten kein Papier? Haben Sie sich jemals gewünscht, Sie könnten Ihre E-Mail auf Ihrem Telefon empfangen? Sie können alles tun