Winkel + Bewegung etc.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Xawer23

Betreff: Winkel + Bewegung etc.

BeitragDi, Nov 01, 2011 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich habe leider wieder ein Problem mit meinem RTS.
Und zwar möchte ich, dass sich Einheiten ZIELSTREBIG auf den Zielpunkt zubewegen. Ich weiß dass ich sowas it 12. Klasse Mathematik locker schaffen müsste, und ich habe auch im Forum nach 'Bewegungswinkel' gesucht und beide Themen durchgelesen. Vlt. einfach zuviel Theorie.

Auch wenn euch das sicher trivial erscheint, kann es bitte nochmal jemand erklären? Einfach nur, wie ich vx und vy werte kriege, mit denen nich ein objekt vom Punkt x1,y1 zum punkt x2,y2 bewegt.

Danke. Very Happy

Starwar

BeitragDi, Nov 01, 2011 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Magst du selbst tüfteln?
Es hat was mit der Differenz aus Start- und Zielkoordinaten, dem Befehl ATan2 (Parameterreihenfolge beachten!) und cos (X-Bewegung) bzw. sin (Y-Bewegung) zu tun Wink
Ich habe gerade leider keine Zeit für ein Beispiel.
MFG

EDIT: http://de.wikipedia.org/wiki/Atan2#atan2

ZEVS

BeitragDi, Nov 01, 2011 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Du fragst nach der BPS#11.
Es gibt hier zwei verschiedene Möglichkeiten:
1. Winkel:
Vermittels einer Arkus*-Funktion (am besten ATan2) den Winkel berechnen, dann mit Sin/Cos den Vektor berechnen und bewegen.
2. Vektor ohne Winkel berechnen. Wenn du eine konstante Geschwindigkeit für die Bewegung hast, bekommst du mit
BlitzBasic: [AUSKLAPPEN]
Sqr(x*x+y*y)
die Länge des gewünschten Gesamtvektors raus und hast die Zeit. Wenn du die Zeit hast, teilst du den Gesamtvektor in Zeit/FPS Einheiten und hast den Vektor für die Bewegung.

Je nach dem, wie es bei dir mit Sin/Cos steht, ist eine der beiden Lösungen einfacherer. Die 2. ist schneller.

ZEVS

das wurgel

BeitragDi, Nov 01, 2011 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
x=x2-x1
y=y2-y2
So bekommst du einen Vektor, der den X und Y-Abstand der beiden Punkte beschreibt. Den musst du dann noch normalisieren. Dass heißt, er wird auf die länge 1 skaliert. Das machst du, indem du den x- und den y-Anteil durch die Länge des Vektors teilst.
Die Länge bekommst du über den Satz des Pytagoras raus:
länge=Wurzel(x² + y²)
Dann noch teilen:
vx=x/länge
vy=y/länge
Um die Einheiten zu bewegen musst du dann nurnoch vx und vy mit der gewünschten Geschwindigkeit malnehmen und auf die Position addieren.
1 ist ungefähr 3
 

Xawer23

BeitragDi, Nov 01, 2011 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke sehr für die schnelle Hilfe!

Ich wusste schon, dass es mit dem Satz des Pythagoras, Sinus und Cosinus zusammenhängt... aber ich habe bei all den Funktionen und Begrifflichkeiten den überblick verloren. Am praktikabelsten für mich ist wohl die Lösung von Das Wurgel, da die Bewegungsgeschwindigkeit im Spielverlauf upgradebar sein soll und ich da am ehesten den Überblick behalte. Es nützt mir ja nichts, Code zu verwenden den ich nicht verstehe.

Very Happy

Edit: waaaaah, es funktioniert!!! Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group