2D-Animationsklasse
2D Animationen sind immer wieder Bestandteile von Spielen, auch in 3D Spielen werden 2D Animationen benutzt, um z.B. Animierte Menüs und Mauszeiger darzustellen. Der Aufbau und die Funktionsweise einer entsprechenden Klasse wird in diesem Artikel beschrieben.
Inhaltsverzeichnis |
Allgemeines zur Animation
Eine Animation ist eine Abfolge von Bildern, die sich von einem Bild zum nächsten Bild von einander Unterscheiden und so der Eindruck einer Bewegung entsteht. Das menschliche Auge nimmt eine Abfolge von ca. 24 Bildern pro Sekunde als flüssige Bewegung wahr.
Animation | Geschwindigkeit |
---|---|
ca. 1 Bild pro Sekunde | |
ca. 1,5 Bilder pro Sekunde | |
ca. 6 Bilder pro Sekunde | |
ca. 10 Bilder pro Sekunde |
Der Eindruck einer Flüssigen Bewegung wird erhöht in dem die Anzahl der Einzelbilder gesteigert wird, das heißt eine Animation mit 5 (einzelnen) Bildern sieht nicht so flüssig aus, wie eine Animation mit 10 (einzelnen) Bildern die in derselben Zeitspanne dargestellt werden. Letzten Endes läuft es darauf hinaus, dass eine flüssige Animation mindestens 24 (einzelne) Bilder pro Sekunde haben sollte. Wie aber oben in der Tabelle zu erkennen ist, geht es auch mit weniger Bildern.
Aufbau der 2D Animations Klasse
Der Aufbau einer 2D Animations Klasse muss nicht zwingend genauso aussehen, wie hier Beschrieben. Es gibt auch andere Varianten eine solche Klasse aufzubauen, deshalb ist dies nur stellvertretend für eine Vielzahl an Möglichkeiten. Die hier Vorgestellte Möglichkeit basiert auf der Sprite Sheet Klasse.
Wie in dem Bild des Klassendiagramms Rechts zu sehen ist, enthält die Klasse C2dAnimation folgende Klassenvariablen:
- eine Instanz der Sprite Sheet Klasse (Sheet)
- einen Statischer Taktgeber (Timer)
- eine float Variable die, die Zeit enthält wann das nächste Bild dargestellt werden soll (NextFrameTime)
- eine float Variable die Angibt wie lange die Umschaltzeiteine von einem Bild zum nächsten dauert (FrameTime)
- eine int Variable die Angibt welcher der Erste Index auf dem Sprite Sheet für die Animation ist (FirstFrame)
- eine int Variable die Angibt welches der Letzte Index auf dem Sprite Sheet für die Animation ist (LastFrame)
- eine int Variable die Angibt welches der Aktuelle Index ist (CurrentFrame)
- eine int Variable die Angibt welcher Index des Sprite Sheet angezeigt werden soll wenn die Animation gestoppt ist (StopFrame)
- eine bool Variable die Angibt ob das Sprite Animiert werden soll oder nicht (Animation_On)
Weiterhin hat die Klasse C2dAnimation folgende Klassenmethoden:
- eine Methode um der Instanz der Sprite Sheet Klasse mitzuteilen, welches Bild geladen werden soll und wie groß der Bildausschnitt sein soll (Load_SpriteSheet(String path, int SpriteSize_X, int SpriteSize_Y))
- eine Methode die das gültige Sprite zurück gibt (Get_CurrentFrame())
- Set Methode für die relevanten Animationsdaten (Set_Animation(int firstframe, int lastframe, int stopframe, float frametime))
- ein Methode die, die Animation an und aus Schaltet (Animation_On(bool Value))