2009-05-19 6 views
0

Ich habe einen Geschwindigkeitsvektor, der V ist (233, 188).Hilfe mit Geschwindigkeitsvektoren

Damit wird ein Objekt in 300 Pixel pro Sekunde in Richtung der rechten unteren Seite des Bildschirms bewegt, wenn der Ursprung V (0, 0) ist.

Wenn die Position des Objekts beispielsweise (592, 334) ist, setze ich den Geschwindigkeitsvektor auf V (294, 55), aber das Objekt bewegt sich nicht in diese Richtung ... Es bewegt sich weiter gleiche Richtung, aber es scheint, dass es eine kleine Kurve von 10 Grad macht ...

Was ich tue, ist:

objectLocation += velocity * elapsedTime; 

Was mache ich falsch?

+0

Überprüfen Sie, ob sich die Position des Objekts geändert hat (und dass z. B. "velocity * elapsedTime" nicht unbedeutend ist). Möglicherweise müssen Sie auch etwas tun, um eine Neubemalung des Objekts zu erzwingen, nachdem sich seine Position geändert hat. – ChrisW

+0

nein nein, was passiert ist, dass der Ort, an dem sich das Objekt bewegt, nicht der ist, den ich eingestellt habe, zum Beispiel die von mir bereitgestellten Werte, es scheint, dass die Objekte eine kleine Kurve um 10 Grad nach rechts machen ... ich habe es vergessen addieren Sie diese Information, sorry ... – Paulo

+0

In diesem Fall ist es vielleicht ein "Rundungsfehler", der verursacht wird, indem man Ganzzahlen anstelle von Fließkomma verwendet ... wissen Sie, was ich bedeute? Sie haben drei Dinge, d. H. "ObjectLocation", "velocity" und "elapsedTime" ... sind das ganze Zahlen oder Gleitkommazahlen oder was? Und welche Programmiersprache benutzt du? – ChrisW

Antwort

1

Der Unterschied zwischen (233,188) und (294,55) ist nicht so viel, im großen Schema der Dinge. Um zu überprüfen, ob der Code funktioniert, versuchen Sie einen Vektor wie (200, -200). Das wird dazu führen, dass es tatsächlich von dem Punkt in der y-Richtung abprallt.

Wenn dieser Code funktioniert, dann sind es nur Ihre Werte, die nicht funktionieren.