![]() |
| #1 (permalink) | |||||
|
Neuer Benutzer
Bit
Registriert seit: 13.06.2012
Fachbeiträge: 3
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
|
Aaaalso, ich hab den ganzen Vormitag und nun auch schon die hälfte des Nachmittags damit verbracht, aber ich find nichts gescheites dazu.
Ich möchte erreichen das sich mein Bild mit der oberen Kante immer zum Cursor hindreht. Das ganze hab ich mir gedacht, löse ich mit Vektoren, wie in der Mathematik und hab mir dazu einfach eine Klasse erstellt die eine X und eine Y koordinate speichern (und mit getX/Y wiedergeben) kann. Wenn die Maus bewegt wird, werden ein x und ein y wert relativ zur mitte des bildes gespeichert. (=> Maus in der Mitte -> Wert X==0 Y==0) Anhand dieser Koordinaten und des Mittelpunktes (hab ich nur in pixeln) läst sich der Vektor berechnen. Der Standartvektor ist praktisch die Y-achse eines koordinatensystems -> (0,1) Die Rechnung sollte(?) stimmen, um einen Winkel rauszubekommen. Das bei mehrmaliger Ausführung das ganze nicht hinhaut(und ist auch ein Spiel - dazu wird es kommen) weiß ich , aber ist nicht mein hauptproblem, das krieg ich dann schon hin, was mich wundert ist das ich keine Winkel <80 bekomme z.b. und teilweise ein NaN (Not a Number) beim double-wert des winkels. Hier der (hoffentlich ausreichende) quellausschnitt:
DER GESAMTE CODE (der relevanten Klasse - für alle Fälle): [spoiler]
PS: Sorry für 2 quelltexte, aber offensichtlich ging der spoilerbutton nicht in diesem forum/hab ihn nicht gefunden :x MfG Ribbley! |
||||
|
|
|
| #2 (permalink) | |||
|
Java-Forum Team
Moderator
Registriert seit: 06.01.2007
Fachbeiträge: 16.996
Abgegebene Danke: 0
Erhielt 1.669 Danke für 1.512 Beiträge
|
Die Berechung des benötigten Drehwinkels könnte man wohl mit Math.atan2(dy,dx) machen.
Aber mal unabhängig davon: Ich glaube, es ist KEINE gute Idee, bei jeder Drehung ein neues Bild zu erstellen. Stattdessen sollte vermutlich eher der aktuelle Drehwinkel des Spielers gespeichert werden. Dann kann man in der drawObjects das gedrehte Bild zeichnen. Letzteres würde dann grob so ablaufen, wie jetzt schon, als ETWA
|
||
|
|
|
| Danke sagt: |
Ribbley (07.09.2012)
|
| #3 (permalink) | |||||
|
Benutzer
int
Registriert seit: 07.08.2012
Fachbeiträge: 43
Abgegebene Danke: 9
Erhielt 3 Danke für 3 Beiträge
|
Hi, habe vor einigen Wochen die selbe Idee gehabt. Wobei ich hier mit der AffineTransform gearbeitet habe die mir das bestehende Bild dreht. Wichtig bei der ganzen Sache ist nur das keiner der beiden Vektoren 0,0 werden sollte. Dies fange ich aber in der Methode(calculate) welche calcTheta berechnet ab. Sonst geschieht es, dass das Bild den Bezug verliert wo vorne ist. Um dein NaN Problem zu lösen. Es tritt auf wenn dein Mauszeiger im rotate Ursprung sich befindet.
Würde dir auch empfehlen dein Ursprung in die Mitte des Players zu verschieben. JPanel:
Player
Window lasse ich mal weg. Falls du das für ein Spiel verwenden willst, sage ich dir gleich, wirst du relativ wenige Sprites finden. 2D overview ohne Vogelperspektive ist rare. Edit: Ah, sehe grade du hast ja ebenfall AffineTransform verwendet. Klappt deins den so wie du es dir erwünscht hast oder hast du noch Probleme dabei? Geändert von stKev (20.08.2012 um 09:34 Uhr) |
||||
|
|
|
| Danke sagt: |
Ribbley (07.09.2012)
|
|
| Stichworte |
| drehen , graphics , mauszeigerposition , spiel |
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| BufferedImage drehen, falsch positioniert | Opi3 | Java Basics - Anfänger-Themen | 5 | 28.11.2011 21:36 |
| (Eclipse) Native Library Location relativ zum Projektordner, nicht relativ zum Workspace | kappesf | IDEs und Tools | 9 | 27.07.2011 07:04 |
| (Swing) Spielfeld drehen von Pentago endet in einer Katastrophe | DenzelX | AWT, Swing, JavaFX & SWT | 2 | 06.07.2011 12:18 |
| Denkanstoß: Drehen eines Bildes (Matrix) | August Stark | Java Basics - Anfänger-Themen | 5 | 10.05.2008 20:39 |
| Rundenstrategiespiel - Problem beim Drehen eines Bildes | Neolity | Spiele- und Multimedia-Programmierung | 18 | 29.09.2006 09:45 |
| Lesezeichen |
|
|