Hallo!
Ich weiß nicht, ob ich einfach nur zu blöd bin, oder das wirklich nicht so trivial ist.
Folgendes Problem:
Ich bastel grad ein kleines 2D-Minigame und benutze dafür Irrlicht (ich weiß ^^)
Im moment bin ich dabei die Steuerung zu implementieren. Sie soll mal so werden wie Asteroids. (Heißt Nach links und rechts rotieren und nach vorne und hinten bewegen)
Das rotieren funktioniert schon einwandfrei. Das Problem ist nun die Bewegung entsprechend der Rotation des Bildes.
Wenn keine Rotaion vorhanden ist, ist die Bewegung entlang der Achse, also wie es sein soll.
Jedoch bekomm ich kranke Werte, wenn eine Rotation ungleich 0° vorhanden ist. (Der Vektor ist [1,0] wird dann aber nach z.B. [75,-58] bei 15° rotiert O.o)
Um mal zu verdeutlichen was ich möchte siehe die Grafik im Anhang.
Zum berechnen des Vektors, der in die "Fahrrichtung" zeigt dient folgender Code:
Code:
vector2df p(0,SHIP_MOVE_SPEED);
vector2df center;
center.X = TexRect.getCenter().X;
center.Y = TexRect.getCenter().Y;
p.rotateBy(RotDeg,center);
Velocity = p;
SHIP_MOVE_SPEED ist 1, also eine Einheit pro Aufruf
TexRect ist das Rect, in dem aktuell die Texture gezeichnet wird inkl. Transformation, Rotation, etc.
RotDeg ist die rotation des Objekts.
Und zum updaten dient folgender Code:
Code:
Position += Velocity;
TexRect = rect<s32>(vector2Position(Position),TexSize);
Velocity.set(0,0);
Ich vermute mal stark, dass das Problem bei der Rotation des Geschwindigkeitsvektors liegt, jedoch bin ich was Vektoren angeht nicht sehr bewandert und hoffe, dass jemand helfen kann den Fehler zu finden.
Danke schonmal im voraus.
_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain