brauch mal dringend hilfe bei einer sprungroutine 2d

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

googlehupf

Betreff: brauch mal dringend hilfe bei einer sprungroutine 2d

BeitragDo, Dez 24, 2009 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich in meiner neuen wohnung noch kein internet hab und heut abend mein bb neu installen muss.....und viel langeweile hab, wollt ich mich an ein kleines jump and run setzen...
hab sowas schonmal angefangen, weiß aber noch daß ich bei der jumproutine ein problem hatte, was ich zwar löste, aber zum geier wo der quellcode ist.

bevor ich also heut nacht komplett verzweifle....ich muss eine jumproutine fertigstellen, bei der auf knopfdruck der player halt springt, aber wiederholtes drücken derselben taste nicht zum wiederholten sprung führt(das ist kein problem), problem damals war glaub ich einfach das umsetzen des ganzen ohne spezielle befehle zu nutzen.
also es geht schlicht und einfach um den algo für die berechnung von y beim sprung bis zu einem gewissen wert und dem darauffolgenden zurückfallen auf den boden.kollision etc. löse ich selbst.

zu beachten wäre vielleicht noch wenn man aus dem laufen heraus springt bzw während des sprunges sich bewegt,dreht links rechts etc.

so ich kann dann später nochmal rein schauen hier, weil ich nur kurz zu besuch bin und das inet nutzen kann.

will nich nach code schnorren oder so, aber bevor ich die ganze nacht jetzt mit dem bisschen code zu tun habe....

wer mir helfen möchte, kann dies gerne tun.

Hubsi

BeitragSo, Dez 27, 2009 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst eine Floatvariable der Du bei Tastendruck (oder was auch immer halt) und sofern die Variable 0 ist einen negativen Wert zuweist. Den Wert stellst Du so ein das das Männicken so hoch springt wie Du es haben willst. Solange der Spieler jetzt springt, bzw. er nicht wieder gelandet ist oder die maximale Fallgeschwindigkeit erreicht ist addierst Du einen Wert Deiner Wahl zu der Variable (je größer der Wert, desto schneller wird der Sprung "abgebaut", bzw. größer ist die Beschleunigung beim fallen). Jetzt gilt es nur noch besagte Variable der y-Koordinate des Spielers zu addieren und schon springt das Kerlchen munter durch die Gegend Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

googlehupf

BeitragSo, Dez 27, 2009 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
danke dir schonmal, werd das heut abend am heimischen pc in code umsetzen, danke dir

Jamagin

BeitragSo, Dez 27, 2009 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst das auch mit einer Data Zeile erledigen.
zB. wo du einfach die Schrittweite dann eben von der y-position des Spielers abziehst bzw. addierst.

Code: [AUSKLAPPEN]

Restore sprung
for j=1 to 13
   read tmpy
   drawimage spieler, player\x, player\y + tmpy, player\animframe
next

.sprung
Data -10, -7, -5, -3, -2, -1, 0, 1, 2, 3, 5, 7, 10


Das ist nur ein Beispiel, man kann es auch anders machen!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Mr.Keks

BeitragSo, Dez 27, 2009 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
... Würde aber massiv von der Data-Zeile abraten. Funktioniert zum Beispiel schon nicht mehr, sobald du Höhenunterschiede im Untergrund hast.
MrKeks.net

Goodjee

BeitragSo, Dez 27, 2009 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
sollte man auch...wenn man zum beispiel noch auf kollisionen mit der decke reagieren will

wie schon gesagt: man nehme eine floatvariable geschwindigkeit
die setzt man auf einen negativen wert
man verändert jeden frame die ykoordinate um die geschwindigkeit und erhöhrt die geschwindigkeit
sobald eine kollision oben oder unten auftritt wird die geschwinditkeit wieder auf null gesetzt -> charakter steht auf dem boden oder beginnt runter zu fallen nachdem er sich den kopf gestoßen hat
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Jamagin

BeitragSo, Dez 27, 2009 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
@MirKeks

Wieso? Was ist daran so falsch?? Man kann ja innerhalb der Schleife sowieso auf was weiß ich für Kollisionen zusätzlich testen und die Sprungroutine mit Exit verlassen!

Es war ja nur ein Beispiel. Mit Sicherheit nicht das beste aber immerhin!

Natürlich gehts auch mit ner Floatvariable, zusätzlich eine Gravitationsvariable und so weiter, damit das ganze ein wenig realistisch aussieht.

Wie gesagt, es war nur ein einfaches Beispiel unter anderem war von Höhenunterschieden ja keine Rede...


lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Goodjee

BeitragSo, Dez 27, 2009 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ne seperate forschleife ist aber in jedem fall blödsinn...
um die rauszuhauen brauchte man dann auch noch ne variable wo man grade ist und das man grade springt und dann wird es viel komplizierter als mit einer variable geschwindigkeit
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Mr.Keks

BeitragSo, Dez 27, 2009 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@jamagin: folgendes ist einfach 10000 mal eleganter, flexibler und handlicher als eine sperrige for-schleife mit statisch vorgefertigtem data. verschiedene sprungstärken, veränderbare gravitation, höhenunterschiede, fall-schaden, kollision, das entsteht alles quasi von selbst! und es ist auch noch halbwegs nah an dem physikalischen hintergrund. Code: [AUSKLAPPEN]
p\ontheground = ...irgendwie ermitteln - hängt vom spielfeld ab
if p\ontheground
    p\yspeed = 0
    if keyhit(jump) then p\yspeed = -p\jumpstrength
    p\y = groundheight(p\x,p\y) + p\height
else
    p\yspeed = p\yspeed + GRAVITATION
    p\y = p\y + p\yspeed
endif
MrKeks.net

Jamagin

BeitragSo, Dez 27, 2009 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Aha, man lernt nie aus! Toll.

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group