Einfache Kollisionsabfrage


Grundlagen der Kollisionsabfrage in Flash MX
Erstellen Sie mit nur wenigen Zeilen ActionScript eine komplette Kollisionsabfrage. Lassen Sie sich von Flash MX unterstützen und legen Sie die Grundlage für eigene Flashgames oder komplexe Animationen mit dynamischen Bewegungen.
Die Realisierung einer Kollisionsabfrage ist für die Verwirklichung vieler Spiele und Animationen eine Grundvoraussetzung. Sehen wir einmal von Brett- und Kartenspielen ab, so werden Sie bei kaum einem Spiel ohne eine Kollisionsabfrage auskommen. Wollen Sie wiederum Animationen mit dynamischen Bewegungen erstellen, so benötigen Sie auch hier häufig eine entsprechende Kollisionsberechnung. Glücklicherweise hilft uns Flash bei der Kollisionsabfrage, so dass wir keine großen mathematischen Kenntnisse voraussetzen müssen.

Erstellen Sie in einem neuen Flashdokument zwei Objekte. Die beiden Objekte sollen zu einem späteren Zeitpunkt die Funktionalität unserer Kollisionsabfrage demonstrieren. Die Formen der Objekte spielen dabei keine Rolle. In der Beispieldatei des Artikels haben wir uns für einen Kreis sowie ein Rechteck entschieden.
Nehmen wir einmal an, das erste Objekt wäre ein Kreis. Markieren Sie den Kreis und konvertieren Sie diesen über die Funktionstaste F8 oder über das Menü „Modifizieren“ unter „In Symbol konvertieren“ in ein Symbol mit dem Verhalten „Movieclip“. Geben Sie daraufhin der Instanz des Symbols über das Bedienfeld Eigenschaften den Namen „circle“. Die Vergabe des Namens ist entscheidend, da wir zu einem späteren Zeitpunkt mit einem ActionScript auf diese Instanz zugreifen wollen. Achten Sie darauf, dass die Instanz weiterhin markiert ist. Rufen Sie mit der Funktionstaste F9 das Aktionen-Fenster auf und fügen Sie folgendes ActionScript in das Fenster ein:

001:
002:
003:
 onClipEvent (load) {
     startDrag(this, true); 
 }

Mit der obigen Anweisung lassen wir den Kreis stetig der Position unserer Maus folgen. Wenden wir uns nun dem zweiten Objekt zu, das wir zu Beginn erstellt haben. Dabei könnte es sich nun beispielsweise um ein Rechteck handeln. Konvertieren Sie auch dieses Objekt in ein Symbol mit dem Verhalten „Movieclip“. Wie zuvor benötigen wir ein ActionScript. Rufen Sie bei markierter Instanz des Rechteck-Symbols das Aktionen-Fenster auf. Fügen Sie in das Fenster folgendes ActionScript ein:

001:
002:
003:
004:
005:
006:
 onClipEvent (enterFrame) {
     if (this.hitTest(_root.circle)) {
         this._x = random(380);
         this._y = random(180);
     }
 }

Dank der Hilfe von Flash findet sich die gesamte Kollisionsabfrage in einer If-Bedingung wieder. So müssen wir überhaupt nicht auf die Form der Objekte achten und mathematische Berechnungen anstellen. Diese Arbeit übernimmt glücklicherweise Flash MX für uns. Mit „this.hitTest“ reagieren wir auf eine Kollision mit dem aktuellen Objekt, also in diesem Fall mit dem Rechteck. Innerhalb der runden Klammern geben wir an, bei was für einer Kollision wir reagieren wollen. Dies ist in unserem Fall die Instanz des Kreises Namens „circle“. In den Blockklammern der If-Bedingung können wir nun beliebigen Code platzieren und Flash damit sagen, was passieren soll, sobald eine Kollision erfolgt. In unserer Beispieldatei verändern wir die aktuelle Position des Rechteckes an eine zufällige neue Position. Der Befehl „random()“ liefert hierbei einen Wert zwischen 0 und der angegebenen Zahl.
Mit der Anweisung „onClipEvent(enterFrame)“ rufen wir das obige ActionScript bei jedem Bildereignis auf. So gewähren wir eine stetige Kollisions-Überprüfung.

Bei Bedarf können Sie natürlich mehrere Objekte auf der Bühne platzieren oder diese mit Hilfe eines kleinen ActionScripts stetig in Bewegung halten.

Beispieldatei: Kollisionsabfrage[Einfache_Kollisionsabfrage.zip]