2D-Grafik Winkelberechnungen auf 2D Grafik

SalazarSlytherin

Neues Mitglied
Moin,

und zwar bastel ich zurzeit an einem Pong-Spiel, wie so viele wohl vorher auch.
Es funktioniert soweit auch alles und ist super, aber bei dem Ein- und Austrittswinkel weiß ich mir nicht mehr zu helfen.

Ich möchte quasi abfragen, wo der Ball auf dem Schläger auftritt und je nachdem den Ausfallswinkel ändern.
Aber dafür müsste ich ja die Möglichkeit besitzen mit dem Datentyp double zu zeichnen. Egal ob ich ein Rechteck oder Kreis zeichne, das funktioniert nur mit integern.
Aktuell fliegt der Ball immer, indem ich x und y im Gleichschritt erhöhe nach jedem Timer-Aufruf.

Die Lösung ist aktuell dass, wenn der schläger am Rand auftritt zum Beispiel folgendes passiert:

- y = y +2ya
- x = x +xa

Somit verändert man schon den Winkel, aber halt auch die Geschwindigkeit des Balles, die ich jetzt als nachträgliches "Level" nachfügen wollte...


Hier der aktuelle Code, in dem ich den Winkel verändere nach Auftreffen.

Danke schonmal im vorraus!

Java:
public void checkCollision() {
      
      
        //Abfrage ob der Ball auf den Schläger trifft
        if (game.getPanel().getPlayer().getBounds().intersects(getBounds()) || game.getPanel().getPlayer2().getBounds().intersects(getBounds())) {
          
            //Bacllwechselzähler
            ballwechsel++;
          
            if (level == 1) {
                //Abfrage wo der Ball auf den rechten Schhläger trifft
                if(xa > 0) {
          
                    if(y >= game.getPanel().getPlayer().getY() &&  y < game.getPanel().getPlayer().getY() +20 ) {   xa =-1; ya=-3;  }
                    else if(y >= game.getPanel().getPlayer().getY() +20  && y < game.getPanel().getPlayer().getY()+40) {   xa =-1; ya=-2;  }
                    else if(y >= game.getPanel().getPlayer().getY()+40 && y < game.getPanel().getPlayer().getY()+60) {   xa =-1; ya=-1;  }
                    else if(y == game.getPanel().getPlayer().getY()+60) {   xa =-1; ya = 0; }
                    else if(y >= game.getPanel().getPlayer().getY()+60 && y < game.getPanel().getPlayer().getY()+80) {   xa =-1; ya=1; }
                    else if(y >= game.getPanel().getPlayer().getY()+80 && y < game.getPanel().getPlayer().getY()+100) {   xa =-1; ya=2;  }
                    else if(y >= game.getPanel().getPlayer().getY()+100 && y <= game.getPanel().getPlayer().getY()+120) {   xa =-1; ya=3;  }
          
                }
                //Abfrage wo der Ball auf den linken Schläger trifft
                else if(xa < 0 ){
              
                    if(y >= game.getPanel().getPlayer2().getY() &&  y < game.getPanel().getPlayer2().getY() +20 ) {   xa =1; ya=-3;  }
                    else if(y >= game.getPanel().getPlayer2().getY() +20  && y < game.getPanel().getPlayer2().getY()+40) {   xa =1; ya=-2;  }
                    else if(y >= game.getPanel().getPlayer2().getY()+40 && y < game.getPanel().getPlayer2().getY()+60) {   xa =1; ya=-1;  }
                    else if(y == game.getPanel().getPlayer2().getY()+60) {   xa =1; ya = 0; }
                    else if(y >= game.getPanel().getPlayer2().getY()+60 && y < game.getPanel().getPlayer2().getY()+80) {   xa =1; ya=1; }
                    else if(y >= game.getPanel().getPlayer2().getY()+80 && y < game.getPanel().getPlayer2().getY()+100) {   xa =1; ya=2;  }
                    else if(y >= game.getPanel().getPlayer2().getY()+100 && y <= game.getPanel().getPlayer2().getY()+120) {   xa =1; ya=3;  }  
              
              
              
                }
          
            }}
 
Zuletzt bearbeitet von einem Moderator:

White_Fox

Top Contributor
Hm...ich sehe aus deinem Code leider zu wenig, wie du die Bewegung des Balls genau machst.

Aber allgemein: Fasse die Bewegungsrichtung als Vektor auf. Dann sind Winkelberechnungen kein Problem. Double brauchst du nicht unbedingt dafür, das geht auch mit Integern. Rechne/denke einfach z.B. in ganzen Millimetern oder Mikrometern anstatt in Metern.
 

LimDul

Top Contributor
Der Trick ist, die Koordinaten mit denen du rechnest, genauer zu machen als die Koordinaten mit denen du zeichnest. Ob mit Integer oder Double ist egal - zum zeichen wird halt gerundet.

Das heißt ein Pixel entspricht in deiner Rechnung z.B. 100 Einheiten. Die Koordinate (200,500) wird dann an (2,5) gezeichnet. Und (330, 720) an (3,7). Dadurch kannst du in der Rechnung mit genaueren Werten arbeiten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Libraries für AWT für andere Grafik-Frameworks tauglich machen AWT, Swing, JavaFX & SWT 6
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
R Grafik per JButton laden und austauschen lassen AWT, Swing, JavaFX & SWT 14
M Umwandlung in den HSV-Farbraum lässt die Grafik pixelig werden AWT, Swing, JavaFX & SWT 8
E Grafik karte erkennen AWT, Swing, JavaFX & SWT 3
S JavaFX Java Custom Node Grafik zurückgeben AWT, Swing, JavaFX & SWT 2
D Swing JCombobox Aktion löscht Grafik AWT, Swing, JavaFX & SWT 1
K Grafik in JFrame einpassen AWT, Swing, JavaFX & SWT 3
C Nach Aufruf von anderer Klasse streikt Grafik AWT, Swing, JavaFX & SWT 1
T AWT Grafik"Array" einzelne Elemente verschieben AWT, Swing, JavaFX & SWT 1
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
S Höhendaten in einer Grafik ausgeben AWT, Swing, JavaFX & SWT 2
S Grafik: Programm kommt nicht zur paint()-Methode AWT, Swing, JavaFX & SWT 6
S Grafik in einer Klassen einfügen/hinzufügen AWT, Swing, JavaFX & SWT 1
C 2D Grafik ein Bild soll permanent durchlaufen AWT, Swing, JavaFX & SWT 2
S 3D-Grafik 3d Grafik auf einem JPanel oder im JScrollPane AWT, Swing, JavaFX & SWT 1
F AWT Grafik wird nicht richtig aktualisiert AWT, Swing, JavaFX & SWT 2
J JTabbedPane Grafik unterhalb der Tabs AWT, Swing, JavaFX & SWT 3
F Grafik hängt sich auf AWT, Swing, JavaFX & SWT 20
S LookAndFeel GUI-Grafik AWT, Swing, JavaFX & SWT 5
J Verschwommene Grafik AWT, Swing, JavaFX & SWT 4
C LayoutManager Grafik soll nicht im GridLayout Skalieren AWT, Swing, JavaFX & SWT 3
F Grafik mit Buttons versehen AWT, Swing, JavaFX & SWT 8
C Grafik Taschenrechner AWT, Swing, JavaFX & SWT 5
J Grafik (Kreis) schneller bewegen? AWT, Swing, JavaFX & SWT 6
Kenan89 Grafik und Text in JPanel anzeigen AWT, Swing, JavaFX & SWT 8
D Fenster mit Grafik überlappen AWT, Swing, JavaFX & SWT 3
Maxim6394 Rotation einer Grafik in swing AWT, Swing, JavaFX & SWT 13
D Swing Grafik in JPanel anzeigen. AWT, Swing, JavaFX & SWT 3
W Grafik von JFrame korrekt speichern AWT, Swing, JavaFX & SWT 7
S Grafik Fehler AWT, Swing, JavaFX & SWT 15
M Swing JLabel (mit einer Grafik) aktualisieren AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Problem beim Drucken eines Grafik-Objekts AWT, Swing, JavaFX & SWT 2
Daniel_L Grafik erstellen, drin zeichnen und dann speichern AWT, Swing, JavaFX & SWT 2
D Grafik über JPanels hinweg verschieben AWT, Swing, JavaFX & SWT 2
C Grafik von main aus aufrufen AWT, Swing, JavaFX & SWT 13
O Swing Label(bzw. Grafik) verdekt von anderm Label AWT, Swing, JavaFX & SWT 2
T rekursive Grafik AWT, Swing, JavaFX & SWT 5
I 2D-Grafik Problem mit schreiben von Text auf eine Grafik AWT, Swing, JavaFX & SWT 7
F Swing Framework gesucht (Swing, Chart, "Scheduling" Grafik) AWT, Swing, JavaFX & SWT 2
S Pacman-Grafik AWT, Swing, JavaFX & SWT 23
N Eigener Grafik Editor mit fehlerhafter Anzeige AWT, Swing, JavaFX & SWT 4
lordcarlos Dynamische und interaktive grafik AWT, Swing, JavaFX & SWT 5
D Systemmodale Grafik AWT, Swing, JavaFX & SWT 10
J Geladene Grafik in ImageIcon auf Panel fest positionern. AWT, Swing, JavaFX & SWT 8
W Grafik aktualisieren AWT, Swing, JavaFX & SWT 5
S Swing Zugriff auf Polyline in Grafik AWT, Swing, JavaFX & SWT 4
A Swing Bei größe verändern des Fensters Grafik weg AWT, Swing, JavaFX & SWT 3
C gute Grafik-Bibliotheken gesucht AWT, Swing, JavaFX & SWT 6
D JFormattedTextfield um Grafik erweitern AWT, Swing, JavaFX & SWT 15
O Grafik wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
P JPanel mit Grafik von HDD über JTree AWT, Swing, JavaFX & SWT 10
S 2D-Grafik beeinflussen durch Scrollbalken AWT, Swing, JavaFX & SWT 2
A Grafik aus MIME-kodiertem Inhalt erzeugen AWT, Swing, JavaFX & SWT 2
T (WACOM) Grafik Tablet abfragen AWT, Swing, JavaFX & SWT 3
S Button mit Grafik versehen AWT, Swing, JavaFX & SWT 5
D Grafik bearbeiten AWT, Swing, JavaFX & SWT 11
M Ich habe Werte und Brauche Grafik! AWT, Swing, JavaFX & SWT 3
M Grafik flexibel an berechneten Koordinaten positionieren AWT, Swing, JavaFX & SWT 4
M dynamische Grafik in JFrame einbetten AWT, Swing, JavaFX & SWT 2
G Transparente Grafik über JMF Video zeichnen AWT, Swing, JavaFX & SWT 2
I Grafik in Text umwandeln AWT, Swing, JavaFX & SWT 11
G Grafik auf mehrere Methoden/Klassen zerlegen AWT, Swing, JavaFX & SWT 2
G Grafik in Button einbinden AWT, Swing, JavaFX & SWT 3
M Grafik in JFrame in Kombination mit Steuerelementen AWT, Swing, JavaFX & SWT 2
T grafik in jpanel wird nicht neugezeichnet AWT, Swing, JavaFX & SWT 7
F Zellen über eine Grafik legen AWT, Swing, JavaFX & SWT 7
S Grafik Farbwert verändern? AWT, Swing, JavaFX & SWT 8
D Farbe einer Grafik über den Cursor abfragen AWT, Swing, JavaFX & SWT 6
G Keine Anzeige von Grafik bei externem paintComponent-Aufruf AWT, Swing, JavaFX & SWT 2
S Popup auf Grafik AWT, Swing, JavaFX & SWT 18
J Grafik "sichtbar" verschieben AWT, Swing, JavaFX & SWT 2
G Grafik auf JComponent ohne Überschreiben von Paint-Methoden AWT, Swing, JavaFX & SWT 4
G Grafik erzeugen: eine Art Zustandsgraph eines Automaten AWT, Swing, JavaFX & SWT 7
P grafik in JScrollPanel AWT, Swing, JavaFX & SWT 5
D AppletCode als JAR aus JSP benutzen und als Grafik speichern AWT, Swing, JavaFX & SWT 2
S Update von Grafik auf JPanel AWT, Swing, JavaFX & SWT 2
S Auf einem JTabbedPane eine Grafik zeichnen AWT, Swing, JavaFX & SWT 11
W Grafik in JLabel aktualisieren AWT, Swing, JavaFX & SWT 4
S Tooltip mit Grafik AWT, Swing, JavaFX & SWT 2
D Visualisierung einer Selektion in einer Grafik. AWT, Swing, JavaFX & SWT 7
P Vektor-Grafik im XML-Format speichern AWT, Swing, JavaFX & SWT 39
P Grafik auf Button AWT, Swing, JavaFX & SWT 3
E Einträge der JComboBox werden durch Grafik verdeckt AWT, Swing, JavaFX & SWT 11
L Komponente und Grafik gleichzeitig auf JPanel zeichnen AWT, Swing, JavaFX & SWT 11
T swing - grafik schrittweise ausgeben ohne repaint() AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben