Animationen

Um CanvasElemente zu animieren kann man zwei Varianten wählen. Subklasse erzeugen Man erzeugt eine Subklasse vom CanvasElement, welches man animieren möchte. Zum Beispiel AnimierterKreis, welche von Kreiserben soll. In dieser Subklasse kann die animate()Funktion überschrieben werden. class AnimierterKreis : Kreis(){ override suspend fun onEveryFrame() { super.animate() x++ y++ } } Animationsroutine hinzufügen Will man zu…

Szenen

Um Szenen einzubauen, muss man erstmal verstehen, wie diese in der Engine gehandhabt werden. Ein implementiertes Beispielprojekt findet sich bei den Samples: DefaultScene Die Engine selbst startet immer mit einer DefaultScene, welche alle Einstellungen aus der Engine übernimmt. Modul Will man Szenen implementieren, so muss man bei der Engine ein Modul anmelden. Dieses erbt von…

CanvasElemente anzeigen lassen

Um CanvasElemente anzeigen zu lassen, muss man erstmal eines erstellen. Da es sich bei CanvasElementum eine abstrakte Klasse handelt, kann man hiervon keine eigene Instanz (kein Objekt) erzeugen. Hierfür stehen die vorgefertigen Klassen wie Kreis oder Rechteck zur Verfügung. (Hinweis: Klassen für CanvasElemente besitzen Deutsche Namen und Properties, Klassen für Objekte, die der Physik-Simulation gehorchen…

Tastatur- und Mauseingaben

Tastatureingaben Das Singleton Keyboard bildet alle momentan gedrückten Tasten ab. Man kann sie sehr einfach abfragen. Etwa in der animate()-Funktion der CanvasElements oder der Bodies: override suspend fun animate() { super.animate() if (Keyboard.isKeyDown(Key.DOWN)) { radius– } if (Keyboard.isKeyDown(Key.UP)) { radius++ } } Zusätzlich kann das Interface KeyEventReacteable eingebunden werden. Dies funktioniert ähnlich den Mouse-Events (siehe…

Kamera verwenden

Um Spiele oder Anwendungen zu gestalten, deren bespielbare Welt über ein einziges Fenster hinaus geht, kann man eine Kamera verwenden. Hierzu muss bei der Engine ein CameraController registriert werden. Dies muss zwingend erfolgen, nachdem der View aufgebaut wurde: viewDidLoad { // Wir erzeugen einen CameraController, der die Standard-Kamera der Engine verwendet. val cameraController = MeinCameraController(engine.camera)…