Flugbahn-berechnung

Posted By: Otter

Flugbahn-berechnung - 10/27/10 11:43



Hallo Leute!
Ich bins wieder!

Wie ihr seht hab ich probleme mit der Flugbahn meiner geschosse.
Ich hab mir im Workshop eines AUM's den code eines granatenwerfers angeschaut, aber dieser senkt den winkel der granaten nur mit konstanter geschwindigkeit hinunter.


Das beispiel GANZ oben würde mir viel besser gefallen!
Wenn ich nach oben schieße, sollte es mir eigentlich auf den kopf knallen und nicht eine weltreise machen.

Wer hilft mir?
eure
OTTER
Posted By: Xarthor

Re: Flugbahn-berechnung - 10/27/10 11:48

Nun wenn du den abschuss winkel kennst und die anfangs geschwindigkeit des projektils, dann kannst du die geschwindigkeit in zwei komponenten zerlegen:
- die horizontale geschwindigkeit
- die vertikale geschwindigkeit

Auf die vertikale geschwindigkeit kannst du nun pro zeit einheit die gravitations-kraft wirken lassen um diese zu verringern.

Nehm also einen vektor (dist), der
- in x den wert der anfangs-horizontal geschwindigkeit enthält
- in y den wert der anfangs-vertikal geschwindigkeit enthält

Diesen kannst du für das projektil somit direkt in der c_move anweisung als rel_dist parameter verwenden.

edit:
Falls die rotation des projektils (also im wesentlichen der tilt wert) sich ändern soll kannst du folgende variante nutzen:
verändere die x und y komponente der art das sie die richtung des projektils beinhalten. Also zerlege die horizontale bewegung in eine x- und eine y-geschwindigkeit.
Nutzen dist dann als abs_dist parameter in der c_move anweisung.

Berechne jeweils den tilt wert neu über die horizontal und vertikal bewegung.
Posted By: Otter

Re: Flugbahn-berechnung - 10/27/10 12:40

Soll das heißen, dass sich die geschwindigkeit des geschosses je nach winkel der "waffe" auf x und y aufteilt?
Also so ungefähr:

geschwindigkeit = 10

Waffe 90° = y 10, x 0
Waffe 45° = y 5, x 5
Waffe 0° = y 0, x 10


wenn das so stimmt, wie würde das in lite-c aussehen?
Oder seh ich das falsch?
Posted By: Xarthor

Re: Flugbahn-berechnung - 10/27/10 12:48

Oh da ist ein kleiner fehler in meinem text. Die vertikale geschwindigkeit wird durch z bestimmt, nicht y. Sorry.

Also die horizontale geschwindigkeit v_hori erhälst du per:
v_hori = v_gesamt * cos(hoehenWinkel);

Die vertikale geschwindigkeit v_vert:
v_vert = v_gesamt * sin(hoehenWinkel);
Posted By: Otter

Re: Flugbahn-berechnung - 10/27/10 14:10

soweit so gut! Danke Xarthor
Ich hab mich schon eine wenig herumgespielt, komm aber nicht drauf wie man jetzt auch den pan wert berücksichtigt. Egal wohin ich mich drehe, die geschosse fliegen immer alle nach rechts ...

EDIT: KORREKTUR! Ich habs selbst hinbekommen! Jetzt fehlt mir nur noch das mit dem winkel des geschosses
Posted By: hopfel

Re: Flugbahn-berechnung - 10/27/10 16:25

Also ich würde für diesen Fall eine quadratische Funktion verwenden.
Dessen geometriesche Form ist eine Parabel und die hat genau die Form einer
Flugbahn. Quadratische Funktionen werden meistens im Matheunterricht besprochen, sag wenn dir das nix sagt. ^^
Die Richtung kannst du mit ein wenig Trigonometrie bestimmen, auch Matheunterrichts-Stoff, und Xarthor hats auch schon vorgezeigt. laugh
Ansonsten hilft dir ne Matheseite, einfach mal "Trigonometrie" in Google eingeben.

Den Winkel vom Geschoss kannst du dann ebenfalls durch Trigonometrie bestimmen, einfach asin, acos und atan.
Posted By: Otter

Re: Flugbahn-berechnung - 10/27/10 19:31

Oje hopfel ... ich bin ja nicht dumm, aber so viel mathematik lässt mir graue haare wachsen. (und das brauch ich nun wirklich nicht)
Ich lerne ja lieber an praktischen beispiel als an trockenen formeln.

was ich weis:(oder glaube zu wissen)
der tilt winkel ergibt sich aus der diverenz zwischen x-und z-geschwindigkeit.

was ich nicht weis:
wie ich das umsetzen soll. crazy

Wollt ihr es mir verraten?
Posted By: Superku

Re: Flugbahn-berechnung - 10/27/10 19:37

vec_set(old_pos,my.x);
c_move(me,...)
vec_diff(temp,my.x,old_pos);

Nun zeigt der Vektor temp in Richtung der neuen Position, von der alten aus gesehen. Diesen Richtungsvektor musst du nun nur noch in einen Euler-Winkel konvertieren:

vec_to_angle(my.pan,temp);
Posted By: Otter

Re: Flugbahn-berechnung - 10/27/10 20:25

Sehr gut!
Wieder ein problem gelöst.
Langsam bekomm ich echt schuldgefühle dir gegenüber Superku.
DANKESCHÖN an dich und Xarthor

ihr seid toll
OTTER
© 2024 lite-C Forums