ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
1820
1820
EMPFEHLEN
-
Hi,
wir müssen nun in der Schule ein kleines Java-"Spiel" entwickeln und natürlich auch alles dazu erklären können. Unsere Gruppe entschied sich für eine Art Tower-Defesne mit nur einem Turm. =D
Der Turm befindet sich in der Mitte des Fensters, dreht sich immer in Richtung des Mauszeigers und schießt auch in diese. Die Formel zum drehen haben wir schon und zum Bewegen der Schüsse auch soweit. Unser Problem ist nun, das ganze in Java umzusetzen. Die Formel ist dabei ja noch einfach. Allerdings wirds beim drehen des Objekts schon schwierig.
Soweit ich festgestellt habe, ist die Formel zum bewegen sowieso noch nicht ganz ausgereift. Wobei ich allerdings nicht weiß, ob es an Java oder der Formel liegt.
Zum Drehen benutzen wir in etwa diese:
Code :1 2 3 4 5
int a = jLabel1.getX() - mousePos.x; int b = jLabel1.getY() - mousePos.y; double ang = Math.atan2(a,b); double dir = ang/(Math.PI/180); //Ich weiß nicht, ob das noch nötig ist. =O
Debug messages helfen mir leider auch nicht wieter, da diese mir zum Teil völlig (für mich) unlogische Ergebnisse angeben.
Zum Bewegen diese Formel:
Code :1 2 3 4 5 6 7 8 9
int speed = 10; int x_speed = Math.cos(ang) * speed; int y_speed = Math.sin(ang) * speed; int x_pos = jLabel1.getX(); int y_pos = jLabel1.getY(); jLabel1.setLocation(x_pos + x_speed , y_pos + y_speed);
Ich denke das ist so richtig. Die original-formel hab ich nur in der Schule. >.<
Wenn ich das Objekt nun bewege, kommen komische Winkel raus und das Objekt bewegt sich jedenfalls nicht dahin, wo es hin soll.
Und noch eine Frage:
Wie kann man eine Canvas in Java drehen?
Danke schonmal im Vorraus
Morpheyz
-
02.02.10 01:18 #2
- Registriert seit
- Aug 2004
- Beiträge
- 82
Du musst nicht die Canvas an sich drehen, du musst nur das Bild in der Canvas drehen.
Die Klasse Graphics2D hat auch ein paar methoden die euch sicher weiterbringen werden.(Drehen mit einem fixpunkt)
Bei dem obrigen Code fällt mir auf dass:
int x_speed = Math.cos(ang) * speed;
int y_speed = Math.sin(ang) * speed;
du vergessen hast den Winkel der warscheinlich in GRAD ist, in RAD umzurechnen. Dazu gibt es auch wiederrum eine statische Methode in der Klasse Math ( .todegree() | .toradian() )
mfg
germanterminator
-
Hmm..
So ganz verstanden hab ich das jetzt nicht.
Ich kenn zwar den Unterschied zwischen rad und grad, aber ich wieß nich, was ich jetzt rechnen soll? o.O
Hier ist mal der ganze Code der Bewegungsfunktion. Auskommentiertes, unwichtiges Zeug rausgenommen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public void move() { Point mousePos = MouseInfo.getPointerInfo().getLocation(); int a = jLabel1.getX() - mousePos.x; int b = jLabel1.getY() - mousePos.y; double ang = Math.atan2(a,b); double x_Move = Math.cos(ang) * speed; double y_Move = Math.sin(ang) * speed; int i_x_Move = double2int(x_Move); int i_y_Move = double2int(y_Move); jLabel1.setLocation(jLabel1.getX()+i_x_Move,jLabel1.getY()+i_y_Move); }
"final double speed" wird global mit dem Wert 10 deklariert.
Tja das Problem besteht nun darin, dass sich das jLabel nicht in Richtung des Mauszeigers bewegt. o.O
-
07.02.10 19:54 #4DeKugelschieber Tutorials.de Gastzugang
Das mit der Richtung zwischen Maus und Turm (bei mir war es nur kein Turm) habe ich mit einem Vektor gelöst:
Code :1 2 3 4 5 6 7 8 9 10
// Der Vektor ist (Maus X - Turm X, Maus Y - Turm Y) // Formel: // 1/wurzel(x²+y²)*x // und // 1/wurzel(x²+y²)*y speedX = 1/Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))*(x1-x2); speedY = 1/Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))*(y1-y2);
MfG Marvin
Ähnliche Themen
-
Linien drehen und Winkel anzeigen
Von Delvar im Forum Flash PlattformAntworten: 1Letzter Beitrag: 08.06.09, 21:11 -
Angestoßenes Objekt in Winkel bewegen.
Von Kai008 im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 4Letzter Beitrag: 02.03.09, 12:55 -
Xpresso Winkel falsche Richtung; negative Werte
Von devils advocate im Forum Cinema 4DAntworten: 2Letzter Beitrag: 08.01.09, 14:16 -
ein statisches Objekt an einem fliegenden Objekt in seinem Winkel Ausrichten XPresso
Von Bronti im Forum Cinema 4DAntworten: 2Letzter Beitrag: 21.07.04, 22:42 -
Objekt richtung Maus drehen
Von KR@SSonkel im Forum Flash PlattformAntworten: 9Letzter Beitrag: 05.04.04, 17:56





Zitieren
Login





