Würfelanimation

Der Benutzer der Cardboard-App soll ebenfalls die Möglichkeit haben interaktiv eine Würfelanimation steuern zu können. Sobald sich der Cursor der Benutzerschnittelle über den 3d-Würfel befinden soll die Würfelanimation gestarten werden. Befindet sich der Cursor nicht mehr über den Würfel, dann sollte die Animation stoppen.

Der erzeugte Würfel benötigt zuesrt eine neue Komponente Animation, damit er sich im virtuellen Raum autark bewegen kann. Zuerst wird ein 3d-Würfel erzeugt GameObject/3D Object/Cube. Anschließend wird dieser selektiert und es wird der Animationseditor gestartet Window/Animation/Animation. Der Mausklick auf dem Button Create Animation erzeugt dabei die neue Animationsdatei für den 3d-Würfel. Der Animation wird anschließend einen Namen zugewiesen und kann gespeichert werden Abbildung Erzeugen der Animation“ . Durch den Mausklick auf Add Property kann jetzt der Animationsbereich gewählt werden. Hier stehen zur Auswahl der Transform, Mesh Renderer und der Collider Knoten des 3d-Würfels. Bewegung im virtuellen Raum kann durch die Modifizierung des Transform Knotens erfogen. Animiertes Material durch den Mesh Renderer und animierte geometrische Formänderung der Kollisions-Gometrie durch den Collider-Knoten Abbildung „Entsprechenden Slot wählen“. Der Animationseditor erzeugt automatisch einen Keyframe bei der Zeiteinheit 0 Sekunde und einen bei 1 Sekunde. Der Keyframe an der Zeiteinheit 1 Sekunde kann gelöscht werden. Der Würfel soll sich um der Y-Achse bezüglich seines Schwerpunkts um 360° in 5 Sekunden drehen. Dazu wird bei der Zeiteinheit von 5 Sekunden ein neuer Keyframe erzeugt und die räumliche Ausrichtung des Würfels an dieser entsprechenden Zeiteinheit mit Hilfe des Inspectors auf 360° gesetzt. Die Animation kann jetzt gestartet werden Abbildung „Dropshet and Keyframes“. Allerdings ist der Übergang nicht fließend, weil sich an der Zeiteinheit ein Fade-In befindet und bei der Zeiteinheit 5 Sekunden ein Fade Out. Durch Mausklick auf den Curves Button kann aber eine Linerarisierung der Animation erfolgen Abbildung „Dropshet und Keyframes„. Es werden jetzt die Animationskurven angezeigt. Damit die geometrische Eigenschaft der Tangende verändert werden kann, muss sich der Mauszeiger über ihr befinden. Jeweils bei den Zeiteinheiten 0 und 5 Sekunden wird der rechte Mausbutton gedrückt. Anschließend kann durch die Wahl Linear/Both Tangens des erscheinenden Menüs die entsprechende Tangente angepasst werden und die Animationskurve in den entsprechenden Bereichen linearisiert werden. Die Animation bewegt sich jetzt zeitlich linear Abbildung „Linearisierung der Animationskurven“. Der Übergang zwischen der 0 und 5 Sekunde ist jetzt fließend und die jeweiligen Fade-In und Fade-Out Bedingungen sind verschwunden.

Unter Unity gehört zu jeder Animation ein entsprechender Animator mit dabei. Dieser ist erforderlich, damit die Animation zum Besipiel mit Hilfe eines Skripts gesteuert werden kann. Die Ablaufsteuerung einer Animation wird im Animator-Editor als Zustandsdiagramm dargestellt. Dabei werden die einzelnen Zustände der Animation durch Quadrate und die Zustandsübergänge durch Pfeile visualisiert Abbildung „Zustandsdiagramm der Animationssteuerung“. Dabei ist der Zustand Entry der Startzustand der Animation. Dieser geht beim Start der Applikation automatisch in dem Zustand New State über. Die Animation verharrt in diesen Zustand so lang bist die erzeugte bool Variable start den Wert true erhält. Hat die Variable start den Wert true erhalten, so wird ein Zustandsübergang eingeleitet zum neuen Zustand Test. Die Animation wird jetzt als Schleife abgespielt, so lang bist die Variable wieder auf false gesetzt wird. Der Zustandsübergang von Test zu New State lässt die Animation stoppen.

Dem Würfel werden die Event-Trigger Pointer Enter und Pointer Exit hinzugefügt Abbildung „Trigger Events und Skript-Datei“  . Befindet sich der Pointer über den Würfel, so wird die c#-Funktion StartAnimation ausgeführt. Befindet sich der Cursor nicht über den Würfel, so die Funktion StoppAnimation. Die eigentliche c#-Datei , die die bool Variable start entsprechend setzt und entsprechend die Animation steuert, wird dabei als Komponente auf den Würfel gelegt Abbildung „Trigger Events und Skript-Datei“ .

Innerhalb der Start Funktion des Skripts wird die Animator-Referenz auf die Komponente Animator des Würfels gesetzt. Jetzt kann durch die Referenz ani die bool Variable start des Animators auf false gesetzt werden. Die Animation befindet sich dabei im Zustand NewState. Die Animation ist noch nicht aktiv.

            void Start() {

                          ani = GetComponent<Animator> ();

           if (ani != null) 
                          ani.SetBool(start,false);
                         }

 

Befindet sich jetzt der Cursor über den Würfel, so wird die Funktion startAnimation aufgerufen. Das Zustandsübergangsdiagramm befindet sich jetzt im Zustand Test. Die Animation wird jetzt in einer Schleife abgespielt.

             public void StartAnimation(BaseEventData eventData) {
                                                          if (ani != null) 
                                                          ani.SetBool(start,true);
           

                                                                                                                                                 }

Befindet sich der Cursor nicht über den Würfel, so wird die Funktion StoppAnimation aufgerufen. Die Bool Variable start wird jetzt auf den Wert false gesetzt durch die Referenz ani. Dies leiten den Zustandsübergang von Test zu NewState ein. Die Animation stoppt.

 

             public void PauseAnimation(BaseEventData eventData){

                         if (ani != null) 

                                                         ani.SetBool (start, false);

                                                                 }

 

 

Weiter