hehe, ich hab mir jetzt auch mal den Code zu Inelukis Jump&Run angeschaut. Dabei bin ich auch zu dem Ergebnis gekommen das er es einfach mit einem Enter-Password ohne "Wait until Key hit" macht ^^°. (Enttäuschend, nicht war?)
Allerdings hat er es in einem extra Common-Event eingebaut welches da ist:
Ich habe mir den Rest jetzt nicht angeschaut aber wenn ich das richtig verstehe schaut dieses Event lediglich ob die Leertaste noch gedrückt ist, wenn nicht wird der Sprung abgebrochen... So kann man das natürlich auch machen, wobei ich eher bei dem "Segment-Sprung" bleibe, da dieser (für mich) übersichtlicher und leichter zu ändern ist. In Inelukis Beispiel ist zwar auch noch die ganze Abfrage nach Wandsprung etc. eingebaut, trotzdem ist der Code da viel "offener" und nicht so schön komprimiert. Dadurch muss man ständig hin und her schalten. Der Komprimierte wirkt zwar auf den ersten Blick eigentlich länger, ist dies jedoch nicht da man ja bei jeder Änderung einfach alle weiteren Segmente löschen kann, das erste editieren, kopieren und neu einfügen kann bis man wieder die alte Anzahl hat (nur nicht vergessen beim zweiten und allen folgenden das "Enter Password" auf "do NOT Wait until Key hit" zu stellen ).
Ein Segment sieht dann folgendermaßen aus:
Mit den Farben wirkt es am Anfang ein bisschen verwirrend, aber wenn man sich erst mal darauf konzentriert und eingestellt hat, geht das schon. Ich denke es ist recht offensichtlich das jede Farbe für eine Fork-Condition steht. Damit ist es leichter zu überblicken welche Fork bis wohin führt. Allerdings ist zu beachten das nach dem sich die Farben wiederhohlen da auch der ganze Code wiederholt wird (nur das statt 2 da eine 3 steht und statt "Move - Left-Up", "Move - Right-Up"). Ganz am Ende geht dann die erste Fork weiter (Grün) welche dann auch bis zum Ende weiterlaufen wird. So sind alle ineinander verschachtelt...
Sicherlich ist dir auch aufgefallen das drei mal in diesem Code ein "Goto Lable 1" auftaucht. "Lable 1" muss hier ganz am Ende des Events sein wenn alle Switches die du später noch einbaust (für Schadensberechnung oder auch Wandsprung, etc.) wieder ausgeschaltet werden. Also einfach nach der letzten Bewegung.
Damit du da besser durchblickst erkläre ich dir dieses Segment noch mal anhand zweier Teilstücke:
Hier wird erst gefragt ob die Leertaste gedrückt ist, wenn ja wird gefragt ob und wenn, welche Pfeiltaste gedrückt wird.
Erst wird abgefragt ob die Pfeiltaste Links gedrückt wird (wenn nicht geht es ja gleich zum Else und da wird dann alles für Rechts und auch für "Keine Taste" wiederholt). Dann wird zwecks der Bewegungskontrolle die Y-Koordinate des Helden abgespeichert und eine Bewegung nach Links-Oben durchgeführt (wird nicht wiederholt und ignoriert wenn etwas im Weg ist). Da diese Bewegung entweder ganz oder gar nicht durchgeführt wird (steht z.B. nur Links etwas im Weg bewegt er sich nicht einfach nur nach oben) wird danach erneut die Y-Koordinate des Helden abgespeichert (X brauchen wir aus diesem Grund ja nicht). Sind nun beide Koordinaten gleich (sowohl vor als auch nach der Bewegung) wissen wir das sich der Held nicht bewegt hat. Daraus schließen wir, dass etwas im Weg steht. Da wir nun aber nicht wissen ob dieses Etwas neben oder über dem Helden ist wiederhohlen wir die ganze Prozedur, allerdings nur mit einer Bewegung nach oben (nicht zu den Seiten da der Held ja sonst eine Zeit unter der Decke "gleiten" könnte). Findet auch da keine Bewegung statt springen wir gleich zum ende des kompletten Events (der Held hat sich also an der Decke den Kopf gestoßen und fällt nun wieder runter ). Mehr wird da gar nicht gemacht.
Wenn du willst das der Held unter der Decke gleiten kann, kannst du da ja einfach unter der Abfrage "nur nach oben" auch noch eine Abfrage "nur nach Links" einfügen. Das funktioniert dann nach dem selben Prinzip, nur das du auch noch eine X Koordinate brauchst.
Das wir dann gleich zum Ende des Events springen hat den Sinn das wir ja auch noch ein "Schwerkraft" Event brauchen. Dieses wird abgeschaltet sobald der Held springt (z.B. mit dem Switch "Schwerkraft aus", oder "Sprung an"). Dieser wird ganz zu Anfang des Events eingeschaltet (sonst hebt sich die Bewegung des Sprunges und die der Schwerkraft auf ("Move up" + "Move down" = "Move Up-Down" (sieht ziemlich schrecklich aus ^^°))) und zum Ende wieder ausgeschaltet. Würden wir nun nicht gleich zum Ende springen könnte sich der Held noch eine kurze Zeit unter der Decke bewegen bevor das Event von sich aus zum Ende kommt (die Bewegung wird ja nicht ausgeschaltet). Das sieht dann auch nicht gerade toll aus...
Das Schwerkraft-Event kann unterschiedlich kompliziert aufgebaut sein. Wenn der Held einfach nur runterfallen soll (ohne Bewegungsmöglichkeiten) sieht das so aus:
Die etwas kompliziertere Variante benutzt dabei noch einen weiteren Switch, den "Held fällt" Switch. Dies funktioniert dann fast genau so wie das Sprung-Event, nur in die andere Richtung. Das heißt du fragst ab ob eine Pfeiltaste gedrückt wird (rechts-links), dann bewegst du, wenn die Bewegung nicht stattgefunden hat (siehe die Koordinaten-Speicherung oben) bewegst du nur nach unten, geht auch das nicht machst du den Switch "Held fällt" aus und ermöglichst einen neuen Sprung (dann braucht das Sprung-Event z.B. als Bedingung das der Switch "Held auf Boden" an ist, welcher am Ende dieses Events an- und am Ende des Sprung-Events ausgeschaltet wird).
Ich hoffe du konntest alles so einigermaßen nachvollziehen...
mfg
Phönix Tear
Geändert von Phönix Tear (03.10.2005 um 14:08 Uhr)