BMAX - Vektorbewegung mit Wackeleffekt bei Endkoordinaten
Übersicht

LukioBetreff: BMAX - Vektorbewegung mit Wackeleffekt bei Endkoordinaten |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, inzwischen bin ich von Blitz3D auf BlitzMax umgestiegen und finde es sehr viel angenehmer. Im Moment stolpere ich über irgendeine "Falle" beim Benutzen von Vektoren um ein Bild zu bewegen.
Folgendes Problem: Ich bewege eine Grafik über den Bildschirm, dort wohin ich mit der Maus klicke. Die Bewegung läuft wunderbar glatt ab, dank Sin/Cos Vektorberechnung und Deltatimer. Nur am Endpunkt geschieht etwas seltsames: Die Grafik fängt an zu "vibrieren" und es entsteht eine Art Spiegelreferenz, jeweils in einem Frame. Um es zu vereinfachen habe ich den Code extrahiert und vereinfacht zusammengeschrieben um den Fehler besser einzugrenzen. Natürlich hab ich mir die Koordinaten anzeigen lassen und siehe da: dx, dy (Zielkoordination per Mouseklick) und y (Position) stimmen überein, X "wechselt" ständig. Ausschnitt aus dem Debuglog für Variable x: --- DebugLog:119 DebugLog:115 DebugLog:118 DebugLog:114 DebugLog:117 DebugLog:120 DebugLog:116 DebugLog:119 DebugLog:115 DebugLog:118 DebugLog:114 DebugLog:117 DebugLog:120 DebugLog:116 DebugLog:119 Was stimmt da nicht? Ist das ein floating point Problem? Code für Winkelberechnung / Koordination: Code: [AUSKLAPPEN] angle = ATan2(dy - y, dx - x) y:+speed * Sin(angle) * DeltaTime x:+speed * Cos(angle) * DeltaTime Variablentypen: angle = Float x,y,dx,dy = Int Was ich bereits versucht habe: Flip 1 Delay(1) beides ohne Wirkung |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du schießt am Ende immer übers Ziel hinaus, da die Geschwindigkeit > RestEntfernung ist. Einfach mit einer Bedingung abfangen. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Lukio |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, natürlich kann ich es so abfangen.
z.B. Code: [AUSKLAPPEN] If dy = y AND x <> dx x = dx End If Das funktioniert auch - was ich aber dennoch nicht verstehe, ist die ständige Variation der X Variable, aber nicht bei der anderen Positionsvariable. Diese stimmt immer mit der Zielvariable überein. Wenn ich mit dem Vektor darüber hinausschießen würde, müssten ja beide "shiften" oder nicht ? Anzeige sieht so am Ende immer so aus: dx = 120, dy = 273 x = (wechselnd wie im Debuglog) y = 273 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group