PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Den Helden hüpfen lassen...



Mani
13.04.2007, 22:24
Hallo, wie kann man den eigenen Helden hüpfen lassen, wenn man die Enter-Taste drückt? Also dass man zum Beispiel über ein Hindernis hüpfen kann.
Danke schonmal im Voraus!

Jadoo
14.04.2007, 00:33
Hallo,

sollte recht einfach sein:

Du erstellst an der Stelle, wo der Held springen soll ein Event (Push Key, Same Level as Hero) und trägst dort ein:

Move Event:
Start Slip Through
Start Jump
Richtung *
End Jump
End SlipThrough

Bei Richtung müsstest du dann angeben, wieviele Tiles der Held springen soll und in welche Richtung. Start SlipThrough ist hierbei ganz wichtig anzugeben, weil der Held sich sonst nicht über das Hindernis bewegen kann.

Hoffe das hat dir geholfen,
LG

TheBlackKnight
14.04.2007, 02:33
also eig. kommt es ganz drauf an!

also willst du das er jedesmal springt also egal wo er gerade steht das er
hüpft oder nur an einer bestimmten stelle?


MFG

TBK

Unit Nero
14.04.2007, 03:18
Um mal an das anzuknüpfen, was TheBlackKnight sagte: Wenn du willst, dass dein Held frei durch die Gegend hüpfen kann wird das Ganze schon ein bisschen komplizierter.

In dem Fall braucht du (mindestens):
1 Parallel Process in den Common Events
- Enter Password (Tastenabfrage) auf Decision(5)
- Move Event
-- Start Jump
-- [Richting, Weite]
-- End Jump

Natürlich ist das jetzt die extrem vereinfachte Version. Du musst das ganze dann auch noch in Relation mit If-Abfragen setzen, um sicher zu gehen, das dein Held nur dahin springt, wo er das auch darf bzw. kann.
Hoffe, das konnte dir 'n Bisschen weiter helfen.

Gruß Unit Nero

Kopp
14.04.2007, 08:53
Eine etwas komplizierte Variante ist diese hier:
Du brauchst neue Variablen, namens Feld ID, Held X und Held Y.

Change Variable: Var[0001:Held X] Event Hero X
Change Variable: Var[0002:Held Y] Event Hero Y
// damit hast du Die Variablen, auf denen sich der Held befindet. Jetzt muss geschaut werden in welche Richtung der Held guckt
<>If Hero,Up (Direction)
<>Change Variable: Var[0002:Held Y] - 2
<>
:Else Case
<>If Hero,Left (Direction)
<>Change Variable: Var[0001:Held X] - 2
<>
:Else Case
<>If Hero,Right (Direction)
<>Change Variable: Var[0001:Held X] + 2
<>
:Else Case
<>Change Variable: Var[0002:Held Y] + 2
<>
End Case
<>
End Case
<>
End Case
<>
// Die Variablen werden so "verändert", dass man die Koordinaten des Feldes bekommt, das sich 2 Felder vor einem befindet. Jetzt wird geschaut, ob es sich dabei um ein "bespringbares" Feld handelt. Hierzu nehmen wir die ID des Feldes, die übrigends in der Database verändert werden kann. (s.u.)
Set Terrain ID: ([0001],[0002]) Var(0003:Feld ID)
<>If Var(0003:Feld ID) 1 // 1 habe ich in diesem Beispiel mal als "bespringbar" definiert!
<> Move Event: Hero, Start Jump StartSlipThrough Walk Forward Walk Forward EndSlipThrough End Jump
<> Move All // oder ein wait!
End Case
<>

Das alles kommt wie Unit Nero schon gesagt hat in ein Common Event in der Database (Obwohl ichs lieber in ein Parallel Process auf der Map gemacht hätte). Das is nicht der ganze Code. Meine Teil anstatt des
- Move Event
-- Start Jump
-- [Richting, Weite]
-- End Jump
in seinen Code.

*zu dem Sternchen! In der Database kannst du unter Terrain die einzelnen "IDs" erstellen. Mach einfach erstmal 1 = bespringbar, 2 = NICHT bespringbar.
Dann wechselst du zu ChipSets und weist den einzelnen Chips ihre "IDs" zu!

Kopp

Mani
14.04.2007, 10:55
Ja, ich meinte dass man ihn überall hüpfen lassen kann.

Ich habs, danke für die vielen Hilfen und schnellen Antworten! :)

Phönix Tear
14.04.2007, 15:55
Öhm, warum eigentlich so viele Abfragen? Wenn ich dich richtig verstanden habe willst du, dass der Held springt, wenn es möglich ist, d.h. das Feld 2 Felder vor ihm begehbar ist.
Dazu brauchst du allerdings keinerlei Abfragen, denn der Maker (zumindest der 2k, der 2k3 aber glaub ich auch) führen garkeine Sprungbefehle aus, wenn der Held das Zielfeld nicht betreten kann.
Jadoos Möglichkeit umgeht dies zwar, macht die Sache aber leider unsinnig, denn so könnte der Spieler überall hin gelangen (also auch auf Hauswände, Flüsse, Abgründe, etc.).
Wenn du also willst, dass der Held nur dann springt wenn sein Zielfeld frei ist, brauchst du nur das "Enter Passwort" und das "Move Event". Damit sparst du dir die Terrain-ID Abfrage und Einstellung.

Wenn du allerdings willst, das der Held auch dann einen Sprung macht wenn das Feld nicht frei ist (sich dann allerdings in der Luft nicht bewegt), musst du schon eine Abfrage machen. Die von Kopp wäre dabei eine Möglichkeit, imo aber ein bisschen Umständlich, da man immer alle Chip-Sets mit Terrain-IDs versehen müsste.
Daher ist es wohl einfacher nur abzufragen ob der Held sich nach dem Sprung bewegt hat.
Ein Sprung dauert genau so lange, wie ein einzelner Schritt mit der gleichen Bewegungsgeschwindigkeit. Dabei ist es unerheblich, wie weit der Sprung ist.
D.h. ein Move-Event mit:
"Start Jump; Step Right; End Jump"
Dauert genau so lange wie eins mit:
"Start Jump; Step Right; Step Right; Step Right; Step Right; ...; End Jump"
Das ist aber an sich hierbei unwichtig, was zählt ist, wann die Koordinate des Helden "umgeschaltet" wird. Und das wird sie bereits nach 0,0 Sekunden.

Dein Code für das Springen sähe also so aus:

<>Enter Passwort "Sprungpasswort" [5] [wait until key hit]
<>Change Variable "Held X 1", set ["Hero" X-Coord.]
<>Change Varibale "Held Y 1", set ["Hero" Y-Coord.]
<>Move Event ["Hero": Start Jump; Step Forward; Step Forward; End Jump]
<>Wait 0,0 secs
<>Change Variable "Held X 2", set ["Hero" X-Coord.]
<>Change Variable "Held Y 2", set ["Hero" Y-Coord.]
<>Fork Variable "Held X 1" = "Held X 2"
<><>Fork Variable "Held Y 1" = "Held Y 2"
<><><>Move Event ["Hero": Start Jump; End Jump]
<><>End:
<>End:
<>
Ich hab diesen Code jetzt nicht getestet, aber an sich sollte das funktionieren ;)

mfg
Phönix Tear

Mani
15.04.2007, 10:46
Danke sehr http://www.multimediaxis.de/images/smilies/old/sm_12.gif