Sprung
Übersicht

InsoBetreff: Sprung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Huhu!
Also ich hab jetzt ne ganze weile mich durch dieses und andere foren gewühlt und leider zu dem thema nicht viel gefunden, und eigentlich nichts was mir weiter hilft. Ich bin gerade dabei meinen Spieler springen zu lassen, was er auch tut. Code: [AUSKLAPPEN] If KeyHit(KEY_SPACE) If jumping= 0 jumping= 1 EndIf EndIf If jumping= 1 If jumping_frame < jumping_frame_max jumping_frame = jumping_frame + 1 TranslateEntity player,0,jumping_speed,0 Else jumping= 0 jumping_frame = 0 EndIf EndIf Solang jumping = 1 ist, ist die gravitation ausgestellt, allerdings hab ich jetzt das problem, dass der spieler fliegen kann, weil er nochmals springen kann, sobald der spieler am obersten punkt des sprunges angekommen ist, also wenn jumping = 0 gesetzt wird. ich könnte jetzt einfach checken ob der spieler den boden berührt, wenn nicht: kein sprung möglich würde funktionieren, wenns nicht einen haken geben würde: ich will auch auf andere objekte rauf springen können, und wieder runter springen können, allerdings funktioniert da die sache nicht, mit der collision, da ich mich dann quasi an ne wand stellen kann, und an ihr hoch "klettern" könnte.. ich hoffe ihr versteht.. wie löse ich das ganze am besten? mir fällt einfach nichts ein ![]() ich müsste checken ob der spieler mit der oberen fläche von irgendwas kollidiert, mit seiner unterseite natürlich, dann ist ein sprung möglich, sonst nicht.. aber wie krieg ich das hin? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso machst du es nicht... realistisch? Schöne Grüße von der Physik.
Die Sache sieht wie folgt aus: Wenn der Spieler auf dem Boden steht, zieht die Erde an ihm, dass er nicht abheben kann. Wenn er jetzt abspringt, holt er sich mit seinen Beinen einen Impuls, und überwindet damit die Anziehungskräfte. Während er jetzt durch die Trägheit immer weiter nach oben steigt, zehrt die Anziehungskraft permanent an ihm, sodass er immer langsamer wird und schließlich zu Boden fällt. Seine Geschwindigkeit nach oben kannst du einfach in einer Variable speichern. Wenn er nicht auf dem Boden steht, subtrahierst du permanent davon die Anziehungskraft. Wenn er abspringt, dann setzt du die Variable einmal auf einen hohen Wert. In jedem Frame zur Y-Position addieren - und du hast das perfekte Sprungverhalten. BlitzBasic: [AUSKLAPPEN] Global speedY#, playerY# ZEVS |
||
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
das löst sein Problem aber nicht wenn er von Objekten (wenn Y>0.001)
Hierzu musst du mit collisions arbeiten. Ggf testen ob die Kollision wirklich unter dem spieler ist, und nicht seitlich, wie wenn er an eine Mauer springt. |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
Inso |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hey, danke - klingt schonmal richtig gut, allerdings weiß ich damit immernoch nicht ganz, wann der spieler nun springen darf und wann nicht.
also meine map ist einfach nur eine ebene, auf der objekte wie zäune, bäume usw stehen. jetzt will ich dass man über zäune springen kann, auf steine springen kann usw, ich möchte aber nicht dass man sich einfach an dieses objekt stellt (z.B. eine mauer) und dann einfach mehrfach springen drückt und somit dann "fliegt" wenn ich jedoch die collision abfrage, also quasi ob der spieler gelandet ist würde das programm, wenn ich an einer mauer steh, das ganze als "hat kontakt zu objekt, darf also springen" gewertet werden, wie umgehe ich das? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das geht mit CollisionY![]() ZEVS |
||
Inso |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hab mir jetzt den befehl mal etwas angesehen, aber so richtig verstehn tu ich ihn nicht, im endeffekt gibt mir
CollisionY(player) quasi den wert aus an dem player auf der Y achse mit irgendetwas kollidiert, aber wie kann ich mit diesem wert jetzt bestimmen ob der spieler springen darf, oder nicht? steh ich aufm schlauch? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Solange die Kollision unterhalb der Players stattfindet, kollidiert er mit etwas, das unter ihm ist. Wenn die Kollision relativ weit unter ihm ist, heißt das, dass er mit einem seiner ganz untersten Teile (also seinen Füßen) kollidiert. Alternativ kannst du mit CollisionTriangle![]() ![]() ZEVS |
||
Inso |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey, danke für die Ansätze. Hab n Paar Stunden rumgewerkelt und es im endeffekt geschafft ![]() Hab aber linepick dafür verwendet |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group