activar botones e interruptores en unity

Einfaches Interaktionssystem für den Charakter der ersten Person

Einführung

Hier ist eine Lösung für einen First Person Player, um Knöpfe, Schalter, Hebel und mehr in Unity zu aktivieren.

Die Lösung besteht aus drei Skripten, die miteinander interagieren, um die Erkennung der interaktiven Elemente und ihre Aktivierung zu lösen. Zwei Skripte werden als Beispiele zur Verfügung gestellt, um das zu erreichen, was im folgenden Video beobachtet wird:

In dem folgenden Video lade ich die Dateien von dieser Seite herunter und konfiguriere das Interaktionssystem von Grund auf neu.



Es ist wichtig zu erwähnen, dass bei dieser Lösung keine bestimmte Aktion gelöst wird, obwohl zwei Skripte vorgesehen sind, die die Verwendung veranschaulichen, muss jede bestimmte Aktion programmiert werden.

Beschreibung der Download-Dateien

Diese Lösung besteht aus drei grundlegenden Skripten: “CheckInteraction”, “InteractionReceiver” und “IAction”.

Basic Interaction System for First Person Character
Version: 1.1
Published: April 3, 2020

CheckInteraction hat die Aufgabe zu prüfen, ob der Charakter etwas beobachtet, mit dem er interagieren kann. Du kannst dieses Skript zu jedem beliebigen GameObjekt hinzufügen, aber es ist kohärent, es in unseren Charakter zu platzieren.

Der InteractionReceiver wird an allen Objekten in unserer Welt angebracht, die der Charakter benutzen kann, z.B. Knöpfe, Hebel, Türen usw. Den Objekten, die diesem Skript zugeordnet sind, muss auch ein Collider zugewiesen werden, damit das CheckInteraction Skript sie erkennen kann, sonst kannst du dieses Skript nicht zum GameObject hinzufügen.

IAction ist eine Programmierschnittstelle, sie wird nicht auf irgendein GameObject angewendet, aber sie ist für die Lösung notwendig, und wir müssen darauf achten, wie man sie benutzt.

Darüber hinaus werden zwei weitere Skripte als Beispiele bereitgestellt, um zu verstehen, wie die Lösung verwendet wird.

Extra: Grafische Benutzeroberfläche

Das Paket enthält auch die einfache grafische Schnittstelle, die im Video zu sehen ist und die es uns ermöglicht, Nachrichten auf dem Bildschirm anzuzeigen.

Anwendungsbeispiel – Schaltfläche in Unity aktivieren

Nun wollen wir sehen, wie man diese Lösung nutzen kann, um in Unity eine Schaltfläche zu aktivieren und damit Aktionen durchzuführen.

Zunächst beginnen wir mit einer einfachen Szene, in der es einen Knopf und ein Tor gibt.

Charakter

Wir haben das vorgefertigte FPSController-Paket von Standard Assets in die Szene gesetzt. Wenn du das Paket nicht hast, kannst du es herunterladen, indem du hier klickst.

Wir weisen diesem Prefab das CheckInteraction Script zu, das Feld “minInteractionDistance” ist der Mindestabstand, den der Spieler haben muss, um mit dem Objekt zu interagieren, in meinem Fall habe ich 4 angegeben.

Das Feld “rayOrigin” ist der Punkt, von dem der Strahl ausgeht, um die Interaktion zu überprüfen. In diesem Fall platziere ich die Kamera des Charakters, damit der Charakter die Objekte in der Mitte des Bildschirms “sehen” kann.

First-Person-Control-Inspektor in Unity, Skript zur Überprüfung der Interaktion und zur Aktivierung von Tasten oder Schaltern in Einheit
Abb. 1: Das CheckInteraction-Skript ist dem First-Person-Controller zugeordnet.

Empfänger – Schaltflächen oder Schalter

Die zu bedienenden Objekte (wie Knöpfe, Schalter, Hebel usw.) werden mit dem Skript “ReceiverInteraction” versehen, wodurch das Skript “CheckInteraction” diese Objekte erkennt und sie mit der E-Taste bedient werden können.

Wir können eine Nachricht an den Interaktionsempfänger hinzufügen und dann Dinge mit dieser Nachricht tun, z.B. sie auf dem Bildschirm zeigen, wie sie im Video zu sehen ist. Dafür gibt es einen mit Kommentaren markierten Bereich im CheckInteraction-Skript, in dem ein Debug.log erstellt wird, das die Nachricht in der Konsole anzeigt.

Tasten und Schalter in Unity, wie man mit Objekten in Unity interagiert
Abb. 2: Das InteractionReceiver-Skript ist dem Objekt zugeordnet, mit dem du interagieren kannst. Diesem Objekt ist auch der Skript-Schalter des Beispiels zugeordnet.

Objekte mit Aktionen

Wenn wir den Knopf drücken, geschehen zwei Dinge: erstens, dass sich das Tor je nach seinem aktuellen Status öffnet oder schließt, und zweitens, dass der Knopf auf grün wechselt, wenn das Tor geöffnet ist, und auf rot, wenn es geschlossen ist.

Diese beiden Aktionen werden mit Hilfe von zwei Skripten individuell programmiert: “Switch”, das dem GameObjekt des Buttons (Abbildung 2) und Gate (Porton in Spanisch), das dem GameObjekt des Tors (Abbildung 3) zugeordnet ist.

Inspektor eines Tores, das in Unity betrieben wird
Abb. 3: Dem Gate ist das Gate-Skript zugeordnet, das in den Downloads als Beispiel enthalten ist.



Skripte, die die Aktionen lösen

Die Aktionen müssen spezifisch programmiert werden, das heißt, wir müssen mehr Skripte erstellen, die die Aktion lösen. Dies wird von den Bedürfnissen jedes einzelnen abhängen.

In diesem Artikel werden wir die beiden Skripte sehen, die die Tasten- und Gate-Aktionen lösen.

Die Anforderung an Aktionsskripte ist, dass sie “IAction”, eine Programmierschnittstelle, implementieren. Dazu muss in unserem Skript eine Methode namens “Activate” definiert werden, innerhalb derer wir alles tun, was die Aktion bei ihrer Aktivierung durch den Empfänger tun muss.

In den Abbildungen 4 und 5 sehen wir Beispiele für den Knopf und für das Tor. Ich werde wahrscheinlich Videos machen, die erklären, wie man mit diesem grundlegenden Interaktionssystem weitere Mechanismen lösen kann, und wahrscheinlich werden wir es auch verbessern.

Skript für das Verhalten eines Schalters
Abb. 4: Das Beispielskript “Switch” implementiert die IAction-Schnittstelle.

Unity-Skript für das Verhalten eines ferngesteuerten Tors
Abb. 5: Das Beispielskript “Gate” implementiert die IAction-Schnittstelle.

Zuweisen von Aktionen zum Interaktionsempfänger

Sobald wir die Aktionen programmiert haben, weisen wir sie den entsprechenden GameObjects zu und wählen das Objekt aus, das wir als Auslöser für diese Aktionen verwenden (in diesem Fall die Schaltfläche).

Im Script InteractionReceiver haben wir ein Feld namens “ObjectsWithActions”, das ein Vektor von GameObjects ist, in dem wir alle Objekte platzieren werden, die aktiviert werden, wenn wir den Knopf drücken.

Die Objekte, die wir hier platzieren, müssen ein zugewiesenes Skript haben, das die IAction implementiert, damit sie funktionieren. In den Wert “Size” setze ich 2 und weise die GameObjects Gate und Button zu, die das Skript Gate bzw. Switch zugewiesen haben (siehe Abbildungen 3 und 6).

Abb. 6: Im Interaction Receiver konfigurieren wir die Aktionen.

Damit erreichen wir, dass das InteractionReceiver-Skript beim Drücken des Knopfes die Objekte “Gate” und “Button” übernimmt, die Skripte erhält, die das IAction-Interface implementieren, und die Aktivierungsmethode von jedem einzelnen ausführt.



Fazit

In diesem Artikel haben wir gesehen, wie das grundlegende Interaktionssystem funktioniert. Mit dieser Lösung werden wir in der Lage sein, interagierbare Objekte in der Szene zu platzieren (wie Knöpfe, Schalter oder Hebel), und wenn sie aktiviert werden, werden eine oder mehrere Aktionen ausgeführt.

Jede Aktion, die wir durchführen müssen, muss insbesondere mit Hilfe eines Skripts gelöst werden. Die einzige Voraussetzung ist, dass dieses Skript die IAction-Schnittstelle implementiert und daher innerhalb dieses Skripts eine öffentliche Methode namens Activate definiert werden muss.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.