Flash-Game: 'Bewegungsziel' setzen mit der Maus

  • Themenstarter Themenstarter Kebb
  • Beginndatum Beginndatum
K

Kebb

Hallo,

ich versuche gerade ein Spiel in Flash zu programmieren und habe nun einen MC 'player'n und einen MC an dem der 'player'-MC halt macht, wenn er ihn berührt. Soweit geht das schonmal, aber ich habe die Bewegung im Moment mit den Pfeil-Tasten realisiert, was ich aber gerne mit der Maus machen möchte. Also wenn ich mit der Maus auf einen Punkt im Raum klicke, soll der 'player'-MC sich in gleichbleibender Geschwindigkeit dorthin bewegen und dann dort sofort anhalten.

Nun die Frage: Wie geht sowas? :)

Das meiste AS ist im Moment noch in dem MC, welcher als "Blockade" fungiert und sieht folgendermaßen aus:

Code:
onClipEvent(enterFrame){
 if (this.hitTest(_root.player.xb,_root.player.yb, true) || this.hitTest(_root.player.xb,_root.player.ya, true)){
 }
 else{
  if(Key.isDown(key.right)){
   _root.player._x+=10;
  }
 }
 
 if (this.hitTest(_root.player.xa,_root.player.ya, true) || this.hitTest(_root.player.xa,_root.player.yb, true)){
 }
 else{
  if(Key.isDown(key.left)){
   _root.player._x-=10;
  }
 } 
 
 if (this.hitTest(_root.player.xb,_root.player.yb, true) || this.hitTest(_root.player.xa,_root.player.yb, true)){
 }
 else{
  if(Key.isDown(key.down)){
   _root.player._y+=10;
  }
 } 
   
 if (this.hitTest(_root.player.xa,_root.player.ya, true) || this.hitTest(_root.player.xb,_root.player.ya, true)){
 }
 else{
  if(Key.isDown(key.up)){
   _root.player._y-=10;
  }
 } 
}

Im 'player'-MC steht dann noch das:

Code:
onClipEvent(enterFrame){
 xa = this._x - this._width/2;
 xb = this._x + this._width/2; 
 ya = this._y - this._height/2 + (this._height/100*90);
 yb = this._y + this._height/2;
}

Ich hatte schonmal versucht die Bewegung mit der Maus zu realisieren, bin jedoch gescheitert. Erstens wurde der Spieler zum Ende hin stetig langsamer und zweitens weis ich nicht, wie ich es hinbekomme das er an der "Blockade" anhält.

Danke schonmal!
 
Hallo,

welche Version von Flash hast du?

Für MX schlage ich folgende Lösung vor:
Du hast den Hauptfilm und den "player"-MC. Nun codierst du auf dem Hauptfilm so:

PHP:
_root.MouseListener = new Object();
_root.MouseListener.onMouseDown = function() {
    var newX = _root._xmouse;
    var newY = _root._ymouse;
    var speed = 2;
    _root.player.onEnterFrame = function () {
        var Xdiff = newX - this._x;
        Xdiff/= speed;
        this._x += Xdiff;
        //
        var Ydiff = newY - this._y;
        Ydiff/= speed;
        this._y += Ydiff;
        //
        if (Xdiff <.1 && Ydiff <.1) {
            delete this.onEnterFrame;
        }
    }
}
Mouse.addListener(_root.MouseListener);

(nicht getestet)

Gruss
 
Zuletzt bearbeitet:
Hallo! Ja hab MX, aber scheint nicht wirklich zu gehn...

1. Bewegt er sich überhaupt nicht gleichmäßig und
2. hält er nicht wenn er am "Blockade"-MC anschlägt und
3. muss man machmal mehrmals klicken um ihn zum Ziel zu bekommen :/

Aber ich was red ich, ich häng ma ldie swf dran...

PS: Bei der swf im Anhang geht die Tastatur-Steuerung auch noch btw...

PS2: Es soll so ungefähr laufen wie in alten 2D-RPGs like MonkeyIsland
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Hallo,

nun, dein Problem hat mich sozusagen inspiriert. Ich habe bisher noch nie mit Kollisionsabfragen gearbeitet, doch nun hats mich gepackt:

Ich poste hier mal die fla. Das Skript ist noch sehr umständlich und überhaupt nicht ballastfrei, doch funktionieren sollte es eigentlich so, wie von dir verlangt. Die Tastatursteuerung musst du ebenfalls noch selbst einbauen und optisch ist alles natürlich sehr dürftig, doch die Maussteuerung funktioniert. Die Geschwindigkeit des Players regulierst du mit der Variable speedNum.

Gruss
 

Anhänge

Ey geil, danke!
Genau passend, super...

Ich werd jetzt versuchen ob ich's hinbekomme, dass er beim näherkommen größer und beim weggehen kleiner wird. Ausserdem noch verschiedene Ausrichtungen des Players zu realisieren. Je nach dem in welche richtung er läuft, etc.

Mal sehn ob ich das hinbekommen ^^
 
Hoi....hab ne Weile gesessen, aber es geht nu ^^
Würd mich freuen wenn du dir mal meine Ugrades angucken würdest:

Er guckt jetzt in die Richtung wo man hinläuft und man kann einen Bereich
festlegen, wo er kleiner/größer wird, je nach "Entfernung"...
 

Anhänge

Hallo,

hier habe ich nun die perspektivische Y-Achse und einen entsprechend dreinblickenden Player eingebaut. Die maximal bzw. die minimale Grösse des Players sind die Variablen minSize und maxSize.

Gruss
 

Anhänge

Er wird nun langsamer wenn er weiter hinter geht (kleiner wird) und man kann verschiedene Bereiche angeben, wo er wie groß/klein werden soll...

:D
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Zurück