Szene modifizieren

Zuerst wird eine Ebene erzeugt unter GameObject/3D Object/Plane. Diese Ebene markiert eine Raumposition zu der der Anwender sich später teleportieren kann. Die erzeugte Ebene benötigt dabei die Komponenten Transform, Mesh Renderer, Mesh Collider. Diese sind aber standardmäßig schon vorhanden. Dabei wird die Transform-Komponente benötigt, um das 3d-Objekt im virtuellen Raum auszurichten und zu positionieren. Der Mesh Renderer sorgt dafür, dass die Ebene entsprechend sichbar wird. Der Mesh Collider wird benötig , um eine Kollisionserkennung mit anderen 3d-Objekten zu erkennen, siehe Abbildung „Komponenten der Ebene“. Zusätzlich wird noch ein leeres GameObject erzeugt [GameObject/Create Empty], das als Root-Knoten dienen soll und hierachisch als Parent – Objekt dient. Dazu wird die Ebene per Drag & Drop mit der Computermaus über das erzeugte leere GameObject gezogen. Die Transform-Komponente der Ebene orientiert sich jetzt an die Tranform-Komponente des leeren GameObjects. Die zusätzliche Komponente Event Trigger wird benötig , damit Interaktion mit dem Cursor durchgeführt werden kann, siehe Abbildung „Komponenten der Ebene“ Pfeilmarkieung D. Dazu wird die Ebene anselektiert und mit Hilfe des Buttons „Add Component“ des Inspectors ein entsprechender Event Trigger hinzugefügt. Als nächster Schritt wird ein c#-Skript hinzugefügt, das der Ebenen später als Komponente dienen soll. In dem konkreten Fall wurde das Skript mit NewPlayerPosition bezeichnet.

Dabei soll die Funktion public void Teleport(BaseEventData eventData) aufgerufen werden, wenn der Cursor über der Ebenen steht und der Anwender den Button des Cardboards drückt, siehe Abbildung „Komponenten der Ebene“ Pfeilmarkierung D.  Durch den using Befehl werden zuerst Funktionalitäten aus der Engine und des Event-Systems von Unity sichtbar und im Skript zur Verfügung gestellt.

                            using UnityEngine;
                            using UnityEngine.EventSystems

Anschließend benötigen wir die Collider-Komponente des 3d-Objekts und leiten unsere Klasse von der MonoBehaviour Klasse von Unity ab, damit unser Skript der Ebene als Komponente dienen kann, siehe Abbildung „Komponenten der Ebene“ New Player Skript.  Anschließend wird die Variabel play definiert. Diese soll durch den Befehl public von aussen des Skripts sichtbar und setzbar sein, um anschließend als Referenz auf das bewegbare Kamera/Player – Objekt zu dienen

 

                                              [RequireComponent(typeof(Collider))]

                                              publicclassNewPlayerPosition:MonoBehaviour{

                                              public GameObject play; 

 

Anschließend kann die Funktion public void Teleport(BaseEventData eventData) definiert werden, die bei den Event-Trigger Ponter Click aufgerufen wird.  Zuerst wird der Transform-Knoten der Ebene durch die Funktion GetComponent<Transform>() in der lokalen Vektor-Variablen localtrans gesichert und anschleißend die x-Komponente localtrans.transform.position.x und die z-Komponente localtrans.transform.position.z in die Kamer/Player Position play.transform.position kompiert. Die y-Komponente play.transform.position.y des Kamera/Player Objekts soll dabei erhalten bleiben. Das ist die Höhe der Player-Kamera bezüglich des virtuellen Raumbodens.

                                               public void Teleport(BaseEventData eventData) {
                     

                                               Transform localtrans = GetComponent<Transform>();
                                               play.transform.position = 

                                               new Vector3 (localtrans.transform.position.x, play.transform.position.y, localtrans.transform.position.z);

                 }
    }

Das Skript kann jetzt der Ebenen als zusätzliche Komponente hinzugefügt werden, siehe Abbildung „Komponenten der Ebenen“ New Player Skript. Anschließend kann die Ebene dupliziert werden zu zwei neuen Ebenen, die dann im virtuellen Raum jeweils positioniert werden können, siehe Abbildung „Ebene dublizieren“. Zwei weitere Raumpositionen für den Teleport der Player-Kamera sind dadurch erzeugt worden, siehe Abbildung „Drei Raumpositionen“.

 

Weiter