Maximallänge eines Vektors setzen. |
20.10.2005, 15:45 | systemchaos | Auf diesen Beitrag antworten » | ||
Maximallänge eines Vektors setzen. Ich schreibe ein Spiel bei dem eine Rakete bewegt werden soll, 2D gesehen. Das heißt ich habe folgende Vectoren mit 2 Koordinaten: Schub, Bewegung und Position. Bisher alles kein Problem. Ich bewege indem ich Schub auf Bewegung addiere und das dann auf die Position. Gedreht wird indem ich den Schubvector rotiere. Jetzt möchte ich aber eine Maximalgeschwindigkeit setzen. Unzwar so, dass nur bis zu einer bestimmten Geschwindigkeit beschleunigt wird. Auf X von links nach rechts gesehen ist das nur eine einzige abfrage und gut ist. Aber ich habe das Problem, dass ich 2 Achsen habe auf denen sich mein Vector auch nach rechts und unten bewegen kann. Also in den Minusbereich der jeweiligen Achse und irgendwie scheitern all meine Versuche ... Mach ich nun 4 Abfragen, geht es. Aber es sieht abgehackt und absolut unrealistisch aus. Deswegen dachte ich, dass es vielleicht auch anders geht. Meine Überlegungen sind nun hier stehengeblieben:
|
||||
20.10.2005, 16:25 | sqrt(2) | Auf diesen Beitrag antworten » | ||
RE: Maximallänge eines Vektors setzen.
Ich bin mir nicht sicher, welchen Effekt du damit zu erreichen versuchst. Du kannst doch zunächst Vektor B auf Vektor A addieren und den enstehenden Vektor C auf die gewünschte Länge (die Maximalgeschwindigkeit) bringen: Die Muliplikation mit dem Skalar geschieht einfach, indem du jede Komponente des Vektors mit dem Skalar multiplizierst; steht für die Länge von . |
||||
20.10.2005, 16:30 | Poff | Auf diesen Beitrag antworten » | ||
RE: Maximallänge eines Vektors setzen. Relativistisch rechnen wär vielleicht nicht übel, passt sogar, dort c und hier c musst nur Werte tauschen. |
||||
20.10.2005, 17:28 | systemchaos | Auf diesen Beitrag antworten » | ||
Mir ist soeben noch was eingefallen. Ich werde Länge und Richtung der Vektoren trennen. Dann muss ich nur noch die Richtungsvektoren addieren und die Länge ist somit immer positiv. Das kann ich schonmal gut gebrauchen. Das Problem ist aber immernoch, dass ich einfach nicht verstehe wie ich es machen soll mit der Ausrichtung der Rakete. Wenn schubrichtung = bewegungsrichtung dann darf nicht beschleunigt werden ... weicht es etwas ab soll wieder gerechnet werden aber auch nur soweit, dass die Geschwindigkeit nicht die maximalgeschwindigkeit überschreitet aber die Rakete die richtung verändert. Aber ich finde meine Lösung schonmal ganz gut. Ich möchte es so machen: Einheitsvektoren für Schubrichtung und Bewegungsrichtung. Die werden zusammengerechnet und wieder in einen Einheitsvektor verwandelt. Naja. Ich schreibe später weiter. ... muss erstmal nach Hause ... |
||||
20.10.2005, 18:16 | systemchaos | Auf diesen Beitrag antworten » | ||
So. Zu Hause. Nochmal. In Ruhe. Ich weiß gar nicht wieso ich es mir so komplex gemacht habe. Aber ich weiß nun, dass es sehr viel einfacher ist als gedacht. Ich nehme also 2 Vektoren der länge 1: Schubrichtung und Fliegrichtung. Die werden pro Sekunde aufeinander gerechnet (bzw ein bruchteil des Schubvektors pro Frame je nach FPS). Die Geschwindigkeit ist eine eigene Variable. Ist sie Positiv geht's ab nach vorn. Ist sie negativ, dann zurück. Begrenzung der Geschwindigeit dürfte nun kein Problem mehr darstellen. Wenn die Geschwindigkeit die MaxGeschwindigkeit überschreitet wird die letzte addierte Geschwindigkeit abgezogen und fertig -.- ... |
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
|
Die Neuesten » |
|