Springen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Dödel

Betreff: Springen

BeitragMo, Aug 01, 2005 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
nein, bitte nicht gleich schreiben "Forensuche benutzen" das habe ich schon. Ich würde gerne in 3D die Wurfparabel anwenden, von der ich keine Ahnung habe, was genau sie tut, sondern nur weiß, wie sie aussieht. Leider weiß ich nicht, wie man dies in 3D einsetzt. Ich habe niemals einen Sprung zu Stande gekriegt, mein Mesh ist einfach nur unter das Terrain gerutscht und dann ins endlose Nichts gefallen.

Bitte helft mir, egal ob mit Beispielcode oder genauer Erklärung.

Zur verdeutlichung der Situation:

Ich habe das hier gefunden:

x = v * t * Cos (a)

y = (-g/2) * t^2 + v * t * Sin(a)


v ;Anfangsgeschwindigkeit (z.b. 50 Km/h)
a ;Abwurfwinkel (z.b. 45°)
g = 9.81;= Fallbeschleunigung
t ;ist di Zeit, ist am Anfang auf Null zu setzen


Ich verstehe die Größen inhaltlich soweit.

Zur Geschwindigkeit:
Um den Spieler eine durchschnittliche "Renn-Geschwindigkeit" laufen zu lassen, muss ich ihn pro Schleife um 1 bewegen.

Nach meiner Bewegungsabfrage kommt die Abfrage für die Shifttaste. Ist diese gedrückt, wird jumpstatus auf 1 gesetzt.

Ist dann jumpstatus =1 dann wird die Function springen ausgeführt. In diese möchte ich nun die Berechnung integrieren und den Player dann bewegen.

Wie müssen Formeln und Befehle jetzt angeordnet werden? Welchen Wert brauche ich für Startgeschwindigkeit? Um welchen Wert muss ich dann die Zeit pro Schleifendurchlauf erhöhen?

Ich wäre für Antworten sehr dankbar,
Dödel

Lord_Vader

BeitragMo, Aug 01, 2005 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist nicht dein ernst oder?
 

BIG BUG

BeitragMo, Aug 01, 2005 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst keine Wurfparabel um einen physikalisch korrekten Sprung abzubilden.
Es reicht die Y- bzw. Fallgeschwindigkeit deines Objektes je Zeiteinheit um einen bestimmten Betrag zu erhöhen um Gravitation zu simulieren. Das ist in 2D nicht anders als in 3D.
Für einen Sprung setzt Du dann einfach eine umgekehrte Geschwindigkeit. Fertig.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)
 

Dödel

BeitragDi, Aug 02, 2005 9:39
Antworten mit Zitat
Benutzer-Profile anzeigen
...das ist dann aber doch gerad nicht physikalisch korrekt...
@Lord_Vader Zu meinem Leidwesen schon. Mein Hauptproblem ist dabei, dass ich keine Ahnung habe, in welchen Relationen sich die Werte Geschwindigkeit und Zeit bewegen. Ich vermute, das ist mein Fehler. Ich habe unter anderem probiert, einfach die Formeln in die Function zu setzen und meine Figur dann um die errechneten werte zu bewegen, aber wie gesagt fällt mein Player da einfach nur durch das Terrain...

Xaron

BeitragDi, Aug 02, 2005 10:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn Du es physikalisch korrekt haben möchtest, schau Dir mal Tokamak an.

Gruß - Xaron
Cerberus X - Monkey X Reloaded!

Lord_Vader

BeitragDi, Aug 02, 2005 10:11
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Ist das physikalisch korrekt.
2. Meinte ich damit das das ins anfängerforum gehört.

moment!

BlitzBasic: [AUSKLAPPEN]

Graphics3D 640,480,32,2

Cam = CreateCamera()

plane=CreatePlane()

cube=CreateCube()

EntityColor cube,255,0,0

MoveEntity cube,0,+3,0

MoveEntity cam,-4,+4,-6

PointEntity cam,cube


EntityType cube,2
EntityType plane,2

yg#=0
mass#=0.25
grav#=0.15

m=MilliSecs()

SetBuffer BackBuffer()

Repeat


If MilliSecs()-m=>125 Then

yg#=yg#-mass#*grav#


m=MilliSecs()

End If

Collisions 2,2,2,2

If EntityCollided(cube,2) Then

yg#=0

If KeyHit(57) Then yg#=yg#+mass#*grav#

End If

MoveEntity cube,0,yg#,0

UpdateWorld
RenderWorld
Flip 0

Until KeyHit(1)
 

Dödel

BeitragDi, Aug 02, 2005 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
...nun würde ich allerdings gerne tatsächlich die ach so oft genannte Wurfparabel benutzen... Es leigt tatsächlich an den Werten fürGeschwindigkeit und Zeit, ich habe ein wenig rumprobiert und jetzt springt er immerhin schon mal nach oben...

Kann mir denn irgendwer sagen, wie groß die Werte ungefähr sein müssten, damit es nach einem Menschlichen Sprung aussieht und nicht nach einem übergroßen Grashüpfer?

mfg
Dödel

wunderkind

BeitragDi, Aug 02, 2005 10:18
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~

Hier handelt es sich um Grundlagen.
wunderkind

Lord_Vader

BeitragDi, Aug 02, 2005 10:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit einer parabel ist das schwachsinn. Wenn du ein richtiges spiel machst, wo 2 leute aufeinander zuspringen können sie nicht richtig kollidieren und so weiter, da es vorberechnet ist. Die werte die du je nach zeit aus meinem beispiel rausliest liegen in einer parabel. Es ist also mathematisch korrekt. Nur immer in echtzeit berechnet. Selbst wenn dir jemand bei dem hilft es ist unnötig.
 

Dödel

BeitragDi, Aug 02, 2005 11:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ich sagte war, dass deine Varíante kein realistischer Sprung ist, nicht, dass es kein Sprung ist. Allein, wenn du es dir ansiehst, wirst du sehen, dass ein Sprung mit der Wurfparabel flüssiger ist und mehr Möglichkeiten (z.B. Winkel) zulässt. Außerdem ist es nicht vorberechnet. Pro Schleifendurchlauf wird für deine Position der dazugehörige Wert ausgerechnet, wie es bei Funktionen üblich ist. Springst du besipielsweise gegen eine Wand, die mit Kollision versehen ist, dann wirst du genauso sliden, wie wenn du fest auf dem Boden stehst.

Mein Problem ist weiterhin nur, dass ich nicht wieß, wie groß die unterschiedlichen Werte sein müssen. Insofern bräuchte ich eigentl. nur jemanden, der einen Sprung mit einer Wurfparabel berechnet und realistisch aussehende Werte erhalten hat.

mfg
Dödel

Edit:
Ps:
Bitte gib den Code nicht mit Blitz-Code an, sondern mit normalem Code, dann kann man's besser kopieren...

Lord_Vader

BeitragDi, Aug 02, 2005 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok. Ich glaube du verstehst hier was nicht.
Wenn du nur deine Werte haben willst probier doch aus.

Fang bei allem bei 0.1 an und gut is.

Mein Sprung ist flüssig keine angst. Schliesslich kommen die ergebnisse in einer parabel vor.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Aug 02, 2005 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Dödel,
du kannst es natürlich mit einer Wurfparabel machen (wenn du es unbedingt möchtest) und dir damit die Zähne ausbeissen, um dann festzustellen das doch alles nicht so realistisch aussieht. Oder du machst es wie es Lord_Vader gemacht hat. Ich weiß zwar nicht warum, aber die Bewegung sieht dort auch sehr komisch aus. Ich vermute das eine Variable vertauscht wurde oder so. Aussderdem kannst du 9.81m/s Beschleunigung sowieso vergessen. Was soll denn ein Meter auf deiner geränderten Map sein? Und eine Fallgeschwindigkeit auf dem Computer simuliert wie in der Realität in einem Spiel? Ist vielzu schnell. Die Menschen kommen ja so mit ihrer Gravitation nicht zurecht, wie soll es dann auf dem Computer mit eingeschränkten Sehverhältnissen, schlechter Auflösung und ohne Räumliches sehen dann erst sein? Doom, Unreal Tounament, Half-Life und alle Autorennenspiele, Flugsimulatoren und alle anderen laufen eigentlich in Zeitlupe ab. Man merkt nur nicht weil man es so gewohnt ist, weil man sonst überfordert währe.

Du kannst dir mal als Beispiel auch den Code anschauen. Die Bewegung sieht realistisch aus. Wenn nicht dann Kannst du ja immernoch deine vorberechnete Parabel benutzen.

Da ich jetzt echt keine Lust darauf hatte, habe ich kein Rechengeschwindigkeitsfaktor eingebracht. Das bedeutet, daß der Code auf unterschiedlichen Rechnern unterschiedlich schnell läuft...

Code: [AUSKLAPPEN]

Graphics3D 1024,768,32,2

camera=CreateCamera()
light=CreateLight()
cube=CreateCube()

xp#=0
yp#=0
zp#=10
xg#=0
yg#=0
zg#=0

While Not KeyHit(1)

If KeyDown(203) Then xg=xg-.01
If KeyDown(205) Then xg=xg+.01
If KeyDown(200) Then zg=zg+.01
If KeyDown(208) Then zg=zg-.01
If KeyDown(57) And yp<1 Then yg=.3

xg=xg/1.005
yg=yg/1.005
zg=zg/1.005

yg=yg-.01

xp=xp+xg
yp=yp+yg
zp=zp+zg

If yp<0 Then yg=-yg:yp=0:yg=yg/5

PositionEntity cube,xp,yp,zp


RenderWorld
Flip
Wend
End
 

Dödel

BeitragDi, Aug 02, 2005 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es doch vorgezogen, mir über die Wurfparabel den Kopf zu zerbrechen, dein Hinweis, Spiele würden in Zeitlupe laufen hat mir allerdings sehr geholfen Wink
Ich habe bisher immer nur an Zeit und Geschwindigkeit gedreht und es sah doof aus. Nun habe ich die Gravitation mehr als halbiert und die Geschwindigkeit darauf abgepasst und einen wirklich schönen Bogen erhalten. Der Vorteil ist ganz einfach, dass ich den Absprungwinkel ändern kann und nicht durch eine zusätzliche Verschiebung auf der relativen Z-Achse erstellen muss.

Also, vielen Dank für eure Hilfe!! Very Happy

thx,
Dödel

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group