Übung: Hinzufügen der Handinteraktion mit ObjectManipulator
Das ObjectManipulator-Skript unterstützt die Modalität direkte Manipulation des Eingabemodells „Hand- und Bewegungscontroller“. Wenn das Skript an ein Objekt angefügt wird, kann der Benutzer das Objekt mit den Händen verschieben, es skalieren oder drehen. In dieser Übung erstellen Sie zwei Cubes, fügen die erforderlichen Skripts an und verschieben die Cubes anschließend.
Hinzufügen und Anpassen des ersten Cubes
Wählen Sie in der Menüleiste GameObject>3D-Objekt>Cube aus.
Die Standardgröße des Würfels ist ein Kubikmeter, der zu groß für unsere Zwecke ist. Die Größe wird auf 20 Kubikzentimeter herunterskaliert.
Wählen Sie den Cube aus, und ändern Sie dann im Inspector die Skalierungswerte des Cubes im Abschnitt Transformieren wie folgt:
X = 0,2, Y = 0,2, Z = 0,2
Der Cube wurde in der Szene an der Standardposition (0,0,0) platziert. Dies bedeutet, dass sich der Cube an der gleichen Position wie das Headset des Benutzers befindet und der Benutzer den Cube erst sehen kann, wenn er sich nach hinten bewegt. Wir ändern die Positionswerte des Cubes, damit er besser sichtbar wird.
Ändern Sie im Inspector die Positionswerte des Cubes im Abschnitt Transformieren wie folgt:
X = -0,2; Y = 1,6; Z = 0,5
Wir möchten in der Lage sein, drei Seiten des Cubes zu sehen, daher ändern wir auch die Rotation des Cubes.
Ändern Sie im Inspector die Rotationswerte des Cubes in den Transform-Abschnittswerten wie folgt:
X = 9, Y = 14, Z = 0
Tipp
Um den Cube zu vergrößern, wählen Sie ihn aus, stellen Sie sicher, dass der Cursor auf das Fenster Scene zeigt und drücken Sie dann die Taste F. Sie können jedes Objekt auf diese Weise vergrößern.
Hinzufügen der Skripts zum Cube
Damit ein Objekt mit bewegten Händen „gegriffen“ werden kann, müssen drei Komponenten angefügt sein:
- Eine Collider-Komponente (Sie müssen hier nichts tun, im Cube von Unity ist standardmäßig bereits ein Box Collider angefügt)
- Objektmanipulationskomponente (Skript)
- Einschränkungsmanagerkomponente (Skript)
Während der Cube noch ausgewählt ist, wählen Sie im Fenster Inspector die Schaltfläche Komponente hinzufügen aus, suchen Sie nach dem Skript Object Manipulator, und wählen Sie es aus.
Durch das ObjectManipulator-Skript wird ein Objekt mit einer oder zwei Händen verschiebbar, skalierbar und drehbar. Wenn Sie das Skript „Object Manipulator“ hinzufügen, wird auch das Constraint Manager-Skript automatisch hinzugefügt, da das Object Manipulator-Skript davon abhängig ist.
Aktualisieren des Cubematerials
Aus Leistungsgründen empfehlen wir die Verwendung von MRTK-Materialien anstelle der Standardmaterialien von Unity.
- Wenn der Cube weiterhin ausgewählt ist, suchen und erweitern Sie den Abschnitt Materialien der Komponente „Mesh Renderer“.
- Ersetzen Sie das Standardmaterial durch das Material MRTK_Standard_White unter MRTK Standard Assets>Materials. Dazu ziehen Sie das Material direkt in das Feld Element im Abschnitt Materialien
Hinzufügen eines zweiten Cubes
Klicken Sie in der Hierarchie mit der rechten Maustaste auf den Cube und wählen Sie Duplizieren aus. Der duplizierte Cube wird mit dem Namen Cube (1) angezeigt.
Klicken Sie mit der rechten Maustaste auf den ursprünglichen Cube, wählen Sie Umbenennen aus, und nennen Sie den Cube Near Cube.
Klicken Sie mit der rechten Maustaste auf den duplizierten Cube, wählen Sie Umbenennen aus, und nennen Sie den Cube Far Cube.
Derzeit sieht es so aus, als wäre nur ein Cube in der Ansicht Szene vorhanden. Das liegt daran, dass sich „Near Cube“ und „Far Cube“ genau an derselben Stelle befinden. Ändern wir nun die Position und Rotation von „Far Cube“.
Während „Far Cube“ noch ausgewählt ist, ändern Sie seine Werte in der Transformationskomponente wie folgt:
Position: X = 0,6; Y = 1,6; Z = 1,1
Rotation: X = 27; Y= 0; Z = 0
Nun sollte die Kamera den „Near Cube“ auf der linken Seite und den „Far Cube“ ein wenig weiter rechts anzeigen. Um dies zu bestätigen, wählen Sie in der Hierarchie Hauptkamera (unter MRTK XR Rig>Kameraversatz) aus und schauen Sie sich dann das Fenster Hauptkamera im Fenster Szenen an.
Tipp
Wenn die Ansicht im Fenster Szene eher das zeigen soll, was die Kamera sieht, scrollen Sie im Fenster Szene. Möglicherweise müssen Sie Clear Flags der Kamera auf Skybox festlegen, wenn dies nicht standardmäßig eingestellt ist.
Greifen und Verschieben der Cubes im Wiedergabemodus
Wählen Sie die Schaltfläche Wiedergeben aus. Wenn das Projekt mit der Wiedergabe beginnt, wechselt die Ansicht zum Fenster Spiel.
Hinweis
Vergewissern Sie sich vor der Wiedergabe, dass ein gültiges Profil unter Projekteinstellungen>MRTK3 festgelegt ist.
Wählen Sie die Schaltfläche Drei Punkte oberhalb der oberen rechten Ecke des Fensters Game aus und wählen Sie dann Maximierenaus.
Drücken und halten Sie die Leertaste, damit die simulierte rechte Hand in der Ansicht angezeigt wird.
Verschieben Sie die simulierte Hand näher an „Near Cube“, bis sie den Cube an der Seite oder unten berührt.
Klicken Sie mit der linken Maustaste (die Hand „greift“ damit nach dem Cube) und ziehen Sie den Cube dann in der Szene herum.
Um nach „Far Cube“ zu greifen und ihn zu verschieben, verwenden wir den Fernzeiger, der an die simulierte Hand angefügt ist.
Drücken und halten Sie erneut die Leertaste, wenn erforderlich, damit die simulierte rechte Hand angezeigt wird. Beachten Sie den Fernzeiger, der sich vom Ende des Zeigefingers der Hand erstreckt.
Bewegen Sie die Hand näher an „Far Cube“, bis die Spitze des Zeigers auf dem Cube angezeigt wird. Möglicherweise müssen Sie die Hand mehrmals in einer kreisförmigen Bewegung bewegen, damit die Spitze des Zeigers auf dem Cube angezeigt wird.
Klicken Sie mit der linken Maustaste (dadurch schließt sich die Hand, was wir als „Kneifbewegung“ bezeichnen) und ziehen Sie dann den Cube in der Szene herum.