# Beim schießen richtet sich die Kugel nach der Maus aus (Quaternion)



## mick1114 (21. Dez 2011)

Hallo liebes Forum,

Ich arbeite seit einiger Zeit an einem kleinen Weltraumspiel und habe es vor einer Weile endlich geschafft mich im 3D Raum zu bewegen und die Rotationen mit glMultMatrix (von LWJGL), mithilfe einer Quaternionenrotation, anzuzeigen.

Jetz wollte ich mal versuchen das Schießen von Kugeln einzuführen, doch dabei traf ich auf ein Problem:







Um die Grafik etwas zu erläuter: 
Wenn ich schieße erzeuge ich ein Duplikat des Spieler Quaternions, was die Kugel darstellt und lasse dieses immer gerade weiter laufen (mit der gleichen Methode, mit der ich auch den Spieler bewege).
Doch wenn ich dann die Maus nach rechts oder links bewege, bewegt sich die Kugel leicht in diese Richtung mit. Die Kugel selbst zeichne ich mit glTranslatef an die jeweilige Koordinate (mit glMultMatrix hab ich das nicht korrekt hinbekommen).

Wie kommt es zu diesem Problem? Kann mir jemand evtl. ein Paar Suchbegriffe hierfür nennen, oder mir einen Lösungsansatz erläutern?
Danke schonmal!

Mfg,
Mick


----------



## Marco13 (21. Dez 2011)

Klingt im ersten Moment ähnlich wie http://www.java-forum.org/spiele-multimedia-programmierung/128204-4-richtungen-schiessen.html - aber ohne mehr Code wird man da nicht viel machen können (und ein KSKB ist vermutlicht nicht drin...?!)


----------



## Evil-Devil (21. Dez 2011)

Du kannst mit glPushMatrix und glPopMatrix bei der fixedFunctionPipeline arbeiten. Wie das bei NonFixed ausschaut weiß ich leider nicht.

Also erst Matrix sichern. Spieler zeichnen. Matrix wiederherstellen. Kugel zeichnen


----------



## mick1114 (21. Dez 2011)

Das in 4 Richtungen schiessen hab ich gelesen, klingt aber so als sei das 2D.^^Ich zeichne die Kugeln schon innerhalb des gl push und popmatrix. Was ist eine fixedFunctionPipeline?^^ 
Ich dachte eigentlich, das sei ein bekanntes Problem. - ich werde morgen mal versuchen etwas Code zu uppen. 
Danke schonmal.
Gruss,
Mick


----------



## mick1114 (22. Dez 2011)

Hey,
ich habe jetz mal ein KSKB erstellt.
Um es kompilieren zu können müsst ihr LWJGL noch runterladen und den inhalt der Zip auf C: entpacken,
im Projekt selbst müsste alles sonst schon fertig eingestellt sein
Hier bitte lwjgl-2.8.2.zip laden: klick
Hier mein KSKB laden: klick

Kurze Beschreibung:
Die Klasse Movement beinhaltet die Berechnung der bewegung und enthält die Position und Rotation.
In der Grafik klasse befindet sich die Main Methode, der Renderloop, sowie die Eingabe.
Weapons beinhaltet das erzeugen der Kugeln und die Kugelklasse selbst.

Ich denke es liegt irgentwie am UP-Vector, denn wenn man z.b. schießst, sich seitlich nebn die Kugeln bewegt und dann auf diese schaut, verändern sie ihre flugrichtung um 90°. - Ich weis leider nicht wie ich das korrigieren kann, ich hoffe ihr habt eine Idee.

Mfg,
Mick


----------



## mick1114 (22. Dez 2011)

Also ich hab den Fehler gefunden und eigentlich ist er ziemlich dumm.^^
Ich hab der Kugel, anstatt ihr ein neues Quaternion zu erzeugen den Zeiger des Quaternions des Spielers übergeben und deswegn ist sie immer von dem ausgegangen.
Aber trotzdem danke für eure Antworten.

(Sorry für dreifachpost, aber ich kann nicht editieren o0)


----------

