Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Haben Sie sich jemals entwerfen Sie Ihren eigenen Game-Controller wollten? Es ist einfacher als Sie denken!

Für dieses Projekt, die Sie benötigen

  • Arduino oder ähnliche Mikrocontroller
  • 1 x 10 k Ohm-Widerstand
  • 1 x Momentaner Schalter
  • 1 x Potentiometer
  • Verbindungsdraht
  • Ein Steckbrett
  • Unity Game Engine
  • Das Uniduino Plugin von Unity Asset Store ($ 30)
  • Vollständiger Projektcode. falls Sie es nicht schreiben (nicht das Uniduino Plugin enthalten)

Sie können Ihren Controller machen so kompliziert, wie Sie es wünschen, obwohl für dieses Beispiel werden wir ein Potentiometer und eine Taste einrichten - perfekt für die Steuerung eines einfachen Arcade-Spiel.







Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Montage des Controllers

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Vorbereiten der Arduino

Wenn Sie alles verkabelt haben, schließen Sie das Arduino über USB. In Arduino Software IDE Kopf Tools> Vorstand und Werkzeuge> Port auswählen, welche Mikrocontroller und Port Sie verwenden. Die Arduino IDE kommt mit der Skizze gebündelt wir brauchen, und Sie können es unter Datei> Beispiele> Firmata> StandardFirmata finden. Klicken Sie auf Hochladen und Sie werden bereit sein zu gehen.

Einrichten Ihres Unity-Projekt

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Wir können diese gleiche Testplatte verwenden, um unsere Controller zu testen. Set Pin D2 INPUT und Digital. Weiter unten gesetzt Pin A5 auf ANALOG. Ihr Potentiometer und Knopf sollten Werte auf dem Bildschirm angezeigt werden nun neben ihren Pin-Nummern. Fortschritt!

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Jetzt etwas zu machen, wir kontrollieren können

Wir werden ein sehr einfaches Spiel, in dem bauen Ihr Ziel ist Ihre Kugel nach links ausweichen und rechts fallen Würfel zu vermeiden, die Ihre neu gemacht benutzerdefinierten Controller nutzen werden.

Erstellen Sie eine neue Szene und ziehen Sie das Uniduino Fertig von Assets> Uniduino> Prefabs in die Hierachie und ziehen Sie die Uniduino in die Hierarchie Fertig. Wir brauchen sie dort die Unterhaltung zwischen unserem Spiel und Controller zu tun.

In der Unity-Hierarchie auf Erstellen> Sphere und Registerkarte Transformation im Inspector verwenden, um es auf den Boden des Spielbildschirms zu bewegen.

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Es ist Zeit, sich Coding

Nun, einige Codes zu dieser Partei hinzuzufügen. Mit der Kugel in der Hierarchie ausgewählt, klicken Sie auf Component> Neues Skript an der Unterseite hinzufügen davon Inspektor-Fenster ist. Nennen Sie es sphereMover und wählen Sie C Sharp aus dem Dropdown-Menü. Klicken Sie auf Erstellen und Hinzufügen und das Skript wird an die Gameobject hinzugefügt werden. Doppelklicken Sie auf es das Skript zu öffnen und den Code eingeben:

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Wir können nun unsere öffentlichen Variablen im Fenster sehen. Mal sehen, was wir in diesem Stadium treten kann uns später zu helfen. Wir wissen, welche Stecknadel wir früher auf dem Arduino unserer Build verwenden, können wir ihnen geben. Wir wissen auch aus unserem Experiment früher, wie weit wir unsere Sphäre wollen in der Lage zu reisen links und rechts, damit es nicht herunterfällt den Bildschirm. Hier kann nun diese Werte eingeben.

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Erste Anzeichen des Lebens

Es ist Zeit, um tatsächlich Werte von unserem Arduino in dem Unity-Editor angezeigt. Denn jetzt können wir eine Zeile Code zu unserem sphereMover Skript Update-Funktion, und speichern Sie das Skript erneut hinzuzufügen.







Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Wählen Sie Ihre Kugel in der Hierarchie und klicken Sie auf die Play-Taste am oberen Rand des Bildschirms. Das System benötigt einige Sekunden zur Initialisierung, nach dem Sie beginnen sollten die Pot Wert variable Änderung des Inspektoren zu sehen, wenn Sie das Potentiometer bewegen.

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Jetzt reden wir! Nun, streng genommen Einheit und die Arduino sprechen, aber wer zählt? Wenn Sie so weit gekommen sind und nicht den Wert Änderung der Inspektor zu sehen, überprüfen Sie über die Setup-Schritte, und stellen Sie sicher, dass Sie den richtigen Port für Ihre Arduino ausgewählt haben.

Gehen wir diese Sphäre

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Wir wollen, dass die Kugel der X-Position beeinflussen. Leider direkt mit den Werten aus unserem Potentiometer wird nicht funktionieren, als wenn das Potentiometer der ganzen Weg nach links ist es einen Wert von 0 gibt -, die unsere Kugel in der Mitte des Bildschirms setzen würden. Am anderen Ende der Skala des Top-Wert des Potentiometers, 1023, würde stellen Sie den Würfel Weg rechts von unserem Bildschirm aus. Nicht nützlich. Was wir hier brauchen, ist einige Mathematik.

Warum Mathe Wenn Unity wird es für Sie tun?

Eine Erweiterungsmethode ist ein Skript, das eine bestimmte Aufgabe für uns. In diesem Fall geben wir es, die Werte, die wir haben, und es gibt sie an einer kartierten eine andere, bereit, in unserem sphereMover Skript verwendet werden. Am oberen Rand des Fensters Projekt klicken Sie auf Erstellen> C # Script und nennen Sie es Extension. Geben Sie den Code unten in das Skript:

Speichern Sie das Skript, und den Kopf zurück zu Ihrem sphereMover Skript. Wir können nun diese Neuzuordnung Funktion in unserer Extension Skript in unserer Update-Funktion verwenden, um unsere Potiwerte in nutzbare Werte in unserem Spiel zu konvertieren. Unter dem wir die potValue Variable nur zugewiesen, geben Sie Folgendes:

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Die Aufforderung zeigt uns, dass unsere Neuzuordnung nimmt zwei Sätze ab und zu Werten und bildet sie zusammen. Wir können unsere Werte in diese ein.

Speichern Sie Ihr Skript, den Kopf zurück in die Unity-Editor, und drücken Sie die Play-Taste. sehen Sie sollten jetzt, dass die Mapped Pot Variable ändert sich, wenn Sie das Potentiometer bewegen, mit den Werten entsprechen, die wir für unsere linken und rechten Rand bestimmt. Nehmen Sie sich einen Moment Zeit, um sich zurückzulehnen und danken Sie Ihrem Skript Extension. Kein Rechner in Sicht.

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Jetzt haben wir endlich brauchbare Werte. Alles, was jetzt zu tun bleibt, ist, diese Werte zu unserer Sphäre der X-Position zuzuweisen:

Speichern Sie Ihr Skript, den Kopf zurück in die Unity-Editor und drücken Sie spielen. Sie sollten nun in der Lage, Ihre Kugel nach links und rechts mit Ihrem Potentiometer zu bewegen!

Setzen Sie die Taste zur Arbeit

Nun, da wir unsere Sphäre bewegt, wäre es nicht schön, einen Weg zu haben, um die Dinge langsam ein wenig, wenn wir in Zugzwang zu bekommen? Wir werden unsere Taste verwenden, um Zeit in unserem Spiel zu verlangsamen. Öffnen Sie Ihre sphereMover Skript, und fügen Sie diesen Code in Ihre Update-Funktion

Jetzt haben wir die Mechanik unseres Spiels, lassen Sie uns einige Hindernisse gibt! Wir werden den natürlichen Feind der Kugel verwenden, den Würfel. In der Hierarchie auf Erstellen> 3D-Objekt> Cube. Im Inspektoren Würfel, Komponente hinzufügen> Physik> Starrkörper. Stellen Sie den Drag-Wert des Starrkörpers bis 5. Auch unter der Box Collider Komponente im Inspektoren, wählt I Auslöser. Dadurch können wir Kollisionen mit unserer Kugel erkennen.

Erstellen Sie ein Skript auf dem Würfel und nennen es collideWithSphere. das Skript öffnen und die Start- und Update-Funktionen löschen, wie wir sie diesmal nicht mehr brauchen. Geben Sie diesen Code:

OnTriggerEnter sendet eine Nachricht, wenn der Auslöser Collider andere Collider trifft. In diesem Fall sagen wir, es zu zerstören, was es berührt. Speichern Sie das Skript und den Kopf zurück in die Unity-Editor. Ziehen Sie den Würfel aus der Hierarchie im Projektfenster. Sie werden den Text des Würfels in der Hierarchie blau hat sich bemerken. Das ist, weil wir ein Fertig und speicherte es in unserem Projekt angelegt haben. Löschen Sie Ihre Würfel nun aus der Hierarchie.

wir müssen jetzt alle ist ein Skript, die Würfel zu laichen. In der Hierarchie auf Erstellen> Erstellen Leeres. und benennen Sie sie in Game Manager im Inspektor und ein Skript hinzufügen, um es gameManager genannt. Öffnen Sie das Skript und fügen Sie diesen Code:

Wie man einen benutzerdefinierten Game-Controller mit Arduino und Unity

Das fertige Projekt

Nun, wenn Sie spielen drücken, wird laichen die Würfel über Sie und fallen. Sie können Ihr Potentiometer verwenden, um sie zu vermeiden, und Ihre Schaltfläche Zeit zu verlangsamen.

In diesem Projekt werden wir eine eigene Steuerung mit einem Arduino erstellt haben, konfiguriert Einheit und Uniduino mit ihm zu kommunizieren, und erstellt ein einfaches Spiel, um es zu testen. Die Konzepte hier können auf fast jedem Projekt angewandt werden, und es gibt sogar Spiel Konfitüren, die in benutzerdefinierten Steuerungen spezialisiert.

Mit Arduino und Unity können Sie eine benutzerdefinierte Steuerung von fast alles schaffen. Haben Sie ein hallo-Fi erstellt, die ein Raumschiff steuert? Ein Toaster, die eine Plattform-Spiel steuert?







In Verbindung stehende Artikel