Richtung Maus bewegen – Flash Tutorial

13
Jan

Oft möchte man in Spielen gern, dass sich der Spieler dorthin bewegt wo es ihm die Maus “befiehlt”. In diesem Tutorial werde ich euch zeigen, wie einfach das eigentlich ist und wie ihr es dann verwenden könnt.

Als erstes erstellen wir 2 Movieclips:

  • Einen Spieler Movieclip mit dem Instanznamen:player_mc
  • Ein “Ziel” Movieclip mit dem Instanznamen: ziel_mc

Wichtig ist, dass sich der ziel_mc Movieclip vorerst nur in der Bibliothek befindet. Öffnet nun die Bibliothek und rechtsklickt dann auf den ziel_mc. Wählt dann im erscheinenden Kontextmenü “Verknüpfung…” aus. Gebt nun im erscheinenden Fenster bei Bezeichner “ziel” ein. Denkt daran bei “Export für Actionscript” ein Häkchen zu setzen.

Kopiert nun folgenden Code in euer Hauptframe:

var speed = 5;
onMouseDown = function() {
attachMovie("ziel", "ziel", 0);
ziel._x = _xmouse;
ziel._y = _ymouse;
bewegen = true;
}player_mc.onEnterFrame = function() {var a = this._x - ziel._x;
var b = this._y - ziel._y;if(bewegen) {
this._rotation = Math.atan2(a, b) / Math.PI * -180;
this._x += speed * Math.sin((this._rotation) * Math.PI / 180);
this._y += -speed * Math.cos((this._rotation) * Math.PI / 180);
}
if(this.hitTest(ziel)) {
removeMovieClip(ziel);
bewegen = false;
}
}

Nun zur Erklärung des Codes:

Zuerst definieren wir mit  var speed = 5; die Geschwindigkeit, mit der sich der Player zu dem Punkt bewegen soll. Die Funktion onMouseDown wird immer dann aufgerufen, wenn der Spieler irgendwo auf dem Bildschirm mit der Maus klickt. Nun “holen” wir uns mit attachMovie unseren Ziel Movieclip aus der Bibliothek. Die Funktion attachMovie braucht dabei mindestens drei Parameter: idName, neuer Name und Tiefe. Mit idName ist der Name gemeint den wir vorher bei der Verknüpfung des ziel_mc Movieclips angegeben haben. Mit neuerName ist logischerweise der neue Name gemeint der dem Objekt zugewiesen werden soll. Schlussendlich können wir mit Tiefe noch angeben, wie “tief” der Movieclip ist. In unserem Falle spielt das aber keine Rolle und darum geben wir einfach 0 an.

Nun setzen wir unseren, aus der Bibliothek geholten, Movieclip mit ziel._x = _xmouse und ziel._y = _ymouse noch an die richtige Position, nämlich dort wo sich die Maus gerade befindet.
Schlussendlich sagen wir dem Player mit der Variable bewegen = true noch, dass er sich nun bewegen darf.

Nun kommt der Spielerscript, zuerst wird mit var a = this._x – ziel._x und var b = this._y – ziel._y der Abstand zwischen dem Player und dem Zielpunkt berechnet, dann kann es auch schon losgehen. Wenn bewegen = true ist, dreht sich der Spieler Richtung Ziel und läuft los. Die Zeilen:

this._rotation = Math.atan2(a, b) / Math.PI * -180
this._x += speed * Math.sin((this._rotation) * Math.PI / 180)
this._y += -speed * Math.cos((this._rotation) * Math.PI / 180)

sind dabei eigentlich bei dem ganzen Script die wichtigsten. Alles zu erklären würde 1. den Rahmen dieses Tutorial sprengen und 2. tiefer in die Geo-/Trigonometrie eingehen, grob kann man aber sagen, dass mit  Math.atan2(a, b) / Math.PI * -180 der Winkel errechnet wird, in dem sich der Spieler drehen muss, um Richtung Ziel zu sehen. Danach bewegt sich der Spieler darauf zu.

Zum Abschluss muss noch geprüft werden, ob der Spieler das Ziel auch erreicht hat, dies tun wir mit einem einfachen hitTest. Wenn ja, wird das Ziel gelöscht und der Spieler hört auf sich zu bewegen.

Das wars auch schon, testet das Script und wie ihr seht könnt ihr dem Spieler nun sagen wohin er gehen soll. Diese Form von Spielsteuerung kann man sehr gut in Geschicklichkeitsspielen verwenden.

Download (Source .fla)

Fragen, Kritik oder Wünsche einfach in die Comments schreiben.

Viel Spass beim Lesen

Michael Ziörjen

VN:F [1.0.8_357]
Rating: 5.0/5 (3 votes cast)

No comments yet.

Write a comment: