Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-03-2005, 13:31   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 90
Objekt an Führungslinie bewegen/steuern

Hi Leute,

gibt es eine Möglichkeit ein Objekt an einer Führungslinie entlang zu steuern? Oder eine Kollision zu simulieren? Seht euch bitte mal die angehängte Word-Datei an, da seht ihr wie das jetzt bei mir aussieht (Bild).
Das "E" (PacMan) lässt sich per Pfeiltasten steuern, aber der läuft noch durch alle Wände, sollte also entweder nur an der Führungslinie laufen dürfen oder eine Kollision. Die Wande bestehen alle aus dem gleichen MovieClip-Objekt.

Hat vielleicht jemand eine Idee wie ich das hinbekomme oder en BeispielCode?

Danke schonmal im Voraus! :-)

Gruß Nova
Angehängte Dateien
Dateityp: doc PacMan.doc (32,0 KB, 7x aufgerufen)
Novanic ist offline   Mit Zitat antworten
Alt 16-03-2005, 14:50   #2 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Hi !

Habe keine konkrete Idee, aber mir fällt da spontan ein Array ein
das immer eine Linie auf einer Koodinate beschreibt.

Also N Felder mit einer gerade Bewegung. Du willst deine Spielfigur
nicht schief in einem Winkel bewegen sondern gerade an einer Linie
entlang. Das Array müsste Felder für X1, X2, Y1, Y2 haben.

Es kann immer nur Werte für X oder Y geben, niemals sind X1,X2,Y1,Y2 gefüllt.

Beispiel:

160, 180, 0, 0
0, 0, 160, 16

Dies würde deine Spielfigur erst von 160 nach 180 auf der X-Achse bewegen.
Im Array an Stelle 1 wäre dann die Y-Achse dran, von 160 bewegt sich die
Spielfigur nach 16.

Alles Pixelangaben.

Wenn Du jetzt an eine "Kreuzung" kommst, d.h. wenn sich zwei Linien
schneiden (mehr geht ja nicht sonst wär es wieder ein Winkel), dann überprüfst du einfach welche Möglichkeit von Richtungsänderungen du hast.

So würde ich das machen...

Gruß Christian
Utopian ist offline   Mit Zitat antworten
Alt 16-03-2005, 14:53   #3 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Die passenden FLAs gibt es hier:
http://www.flashkit.com/search.php?c...pacman&x=0&y=0

Aber mach es lieber selbst, dann lernst du wenigestens was dabei.

Gruß Christian
Utopian ist offline   Mit Zitat antworten
Alt 16-03-2005, 15:25   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Beiträge: 90
Hm, so eine ähnliche Idee hatte ich auch, aber dann brauch ich ja ne ganze Menge Arrays und die sollen dann jedesmal mit ner Schleife durchlaufen werden oder wie soll ich prüfen, auf welcher Linie sich meine Figur gerade befindet?

Du hast nicht zufällig Zeit und Lust nen Beispielcode zu schreiben oder? :-)
Ist aber echt wichtig und relativ dringend.

Gruß Nova :-)
Novanic ist offline   Mit Zitat antworten
Alt 17-03-2005, 13:25   #5 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Zitat:
Zitat von Novanic
Du hast nicht zufällig Zeit und Lust nen Beispielcode zu schreiben oder? :-)
Ist aber echt wichtig und relativ dringend.

Gruß Nova :-)
Hi !

Naja im Grunde genommen brauchst du ein Array. Dieses Array besteht aus vier Feldern, nämlich den oben genannten.

Wir müssen überprüfen ob das Drücken der Pfeiltasten nach oben, unten, rechts und links einen legalen oder illegalen Zug darstellen.

Beispiel:

Wir starten mit einem Array. (Ich würde dann später sogar die Möglichkeit geben das das Array per Random erzeugt werden kann und die "Linien", sofern es welche zur Orientierung geben sollte, vom Array gezeichnet werden. Als quasi erst Werte festlegen und dann Zeichnen und nicht umgekehrt!). Die Spielfigur sitzt beim ersten Zug auf X = 80 und Y = 0.

X1, X2, Y1, Y2

80, 150, 0 , 0
150,150, 0 , 120
150, 80, 120, 120
80, 80 , 120, 0

Das Array zeigt eine Bewegung in Form eines Rechteckes. Von 80 (Anfangsposition) bewege ich meine Figur nach 150, Y ist null. Nun sind wir bei X = 150 angelangt und als zweites bewegt sich dein Pacman an der Y Achse entlang und zwar von 0 nach 120. Dann wieder auf der X Achse von 150 nach 80 zurück und wieder nach oben auf der Y Achse nach 0.

Schon sind wir wieder am Anfangspunkt angelangt.

Das heißt wenn X1 und X2 gleiche Werte hat erfolgt keine Bewegung für die X-Achse. Gleiches gilt wenn Y1 = Y2. Jedoch muss immer ein Paar also X1 ODER X2 zwei unterschiedliche Zahlen haben damit Bewegung in die Sache kommt. Im Grunde genommen bedeutet das, das Array gibt eine Bewegung an und merkt sich gleichzeitig die Bewegung des letzten Zuges. Beispiel: Der 1. Zug bewegt das Ding von 80 nach 150 auf der X Achse. Im nächsten Array Index steht die X Achse auf 150 und zwar für beide Werte: Ergo heißt das das im ersten Zug eine Bewegung auf der X Achse erfolgte, im zweiten aber nicht.

Aber ACHTUNG: Hier werden keine Züge im Array gespeichert, sondern mein Beispiel verdeutlicht nur den AUFBAU des Feldes.

Zeichne dir die einzelnen Positionen mal auf einem Blatt Papier auf, das wird dann wohl ein Rechteck sein.

Jetzt kommt der CLOU:

Da ich an jedem ECK im Rechteck in zwei Positionen kann, muss ich noch herausfinden in welche! D.h. am Anfang könnte ich meine Figur genausogut nach unten steuern mit der Pfeiltaste aber auch nach rechts.

Der Anfangswert lautet X = 80 und Y = 0. Bevor ein Zug ausgeführt wird muss überprüft werden ob A) er legal ist und B) wohin ich überhaupt kann.

Denk dir das Array oben mal nicht als Array sondern als große durcheinandergeratene Ansammlung von Zahlen. Lass und das Array mal ein bischen mischen: (Ich mische hier die Indexe des Array und nicht die Zahlen in einer Reihe!)

150, 80, 120, 120
150,150, 0 , 120
80, 150, 0 , 0
80, 80 , 120, 0

Nun gehen wir mal davon aus unsere Spielfigur sitzt auf 80, 0, d.h. das ist unsere Anfangsposition. Da das Array nicht die Reihenfolge beschreibt in der wir uns bewegen sondern lediglich als Matrix für die Bewegung dient brauchen wir hier auch auf keinerlei Ordnung zu achten. Auf der aktuellen Position möchte ich nun wissen in welche Richtung ich kann.

Dazu schau ich mir das Array an und Frage wo irgendein X Wert, also X1 oder X2 eine 80 hat. Gleichtzeitig frage ich auch noch wo irgendein Y Wert eine 0 hat. Findest du es? Es sind genau zwei Einträge im Array, nämlich:

150, 80, 120, 120
150,150, 0 , 120
80, 150, 0 , 0 <--
80, 80 , 120, 0 <--

Auf dem vorletzten Eintrag sitzt jetzt beispielsweise unsere Figur. Nun überprüfe ich beide Einträge:

80, 150, 0 , 0 == Ich kann von 80 nach 150 aber nur auf der X Achse.
80, 80 , 120, 0 == Ich kann von 120 nach 0 aber nur auf der Y Achse

Also habe ich zwei Möglichkeiten mich zu bewegen. Dies würde dann für den vorletzten Array Eintrag bedeuten: PFEILTASTE RECHTS und PFEILTASTE RUNTER wäre legal.

Weiter gehts...

Du sitzt mit deiner Figur nun auf X = 80 und Y = 120 wohin kann ich ?
Überlegs dir mal...

Wir verlassen das simple Beispiel und widmen uns einer einfachen Kreuzung:

0, 60, 0, 0
60,60,0,60
60,120,0,0
120,120,0,60
120,120,60,120
120,60,120,120
60,60,120,60
0,0,0,60
0,60,60,60
0,0,60,120
0,60,120,120
60,60,60,120

Wohin kannst du wenn du auf dem Punkt 60,60 (der nicht das geringste mit dem Array zu tun hat sondern nur der Punkt ist an dem sich deine Spielfigur befindet welche anhand des Arrays dorthin befördert wurde) stehst. Wo ist X=60 und Y= 60 im Array?

Lösung:

60,60,0,60
60,60,120,60
0,60,60,60
60,60,60,120

Super !

Die Bewegung, also dort wo X1 <> X2 ODER Y1 <> Y2 ergibt sich wie folgt.

60,60,0,60 --> 60 nach 0 auf Y
60,60,120,60 --> 60 nach 120 auf Y
0,60,60,60 --> 60 nach 0 auf X
60,60,60,120 --> 60 nach 120 auf X

Natürlich ist bei deinem Vergleich immer die aktuelle Position relevant, daher habe ich auch die Zahlen umgekehrt. Also die Bewegung 60,60,0,60 aus dem Array, wenn ich bei der Position X=60 und Y=60 sitze wäre zunächst einmal von Y1=0 nach Y2=60. Das ist aber Quark denn ich sitze nich bei 0 sondern bei 60! Also kehre das ganze um: Aus 0 nach 60 auf Y wird VON 60 nach 0 auf Y!

Und bitte merken: Hier werden keine Züge im Array gespeichert, sondern mein Beispiel verdeutlicht nur den AUFBAU des Feldes. BEDEUTET: Ich kann einen einen Zug jederzeit umkehren.

So einfach geht das. Ist bestimmt geil sich das ganze Random zusammenpuzzeln zu lassen und es dann zu spielen.

Habe dir in den Anhang mal nen JPEG gelegt das die Kreuzung verdeutlicht.

Sieh das ganze Array mal als großen Sack. Immer wenn du deine Figur ein Stück bewegt hast greifst du in den Sack und ziehst einen Eintrag im Array. Passt er zu deiner Position dann benutze ihn, ansonsten schmeiß ihn weg.

Code stelle ich hier keinen rein, hätte aber gut und gerne mal Lust bekommen mein Beispiel selbst auszuprobieren.

Viel Erfolg noch, ist ne Schulaufgabe oder?

Gruß Christian
Angehängte Grafiken
Dateityp: jpg Beispiel.jpg (13,6 KB, 8x aufgerufen)

Geändert von Utopian (17-03-2005 um 13:36 Uhr)
Utopian ist offline   Mit Zitat antworten
Alt 18-03-2005, 08:01   #6 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Hi !

Noch nen cooler Einfall. Da wir nun wissen wo wir uns immer befinden und vor allem wo wir hingehen können, kannst du doch dem Pacman ein paar coole Animationen verpassen.

Steht er beispielsweise an einer Kreuzung dreht er sich so lange im Kreis bis du ihn wieder bewegst. Geht es nur in eine Richtung, also ne Sackgasse, dann dreht er sich automatisch wieder in die entgegengesetzte Richtung.

Wäre doch ne tolle Spielidee.

Gruß Christian
Utopian ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele