Kollision von 2 Objekten

tyno1584

Mitglied
Ich wollte fragen, wie ich es machen soll, denn die Funktion der Kollision stimmt, aber die x und y Koordinate stimmt nicht überein.
Hier wäre der Code:

Kreis kreis;
Rechteck rechteck;
Bricks bricks;
int x,y,r; //Kreis Position nd grösse
int x2,y2,l2,b2; // Rechteck grösse und Position
int vx,vy; // Kreis Geschwindigkeit
int vx2,vy2;// Rechteck Geschwindigkeit
color c,c2; //Farben Kreis&Rechteck
int x3,y3;
int l3,b3;

int a;
void setup(){
x=100; y=350; r=25;
x2=200; y2=600; l2=150; b2=20;
vx=2; vy=2; vx2=2; vy2=2;
c=200; c2=100;
x3= 40 ; y3= 40;
l3=50; b3=20;
kreis = new Kreis(x,y,r,x2,y2,vx,vy,l2,b2,c,c2);
rechteck = new Rechteck(x,y,r,x2,y2,l2,b2,vx,vy,vx2,vy2,c2);
bricks = new Bricks(l3,b3);
background(c);
size(650,650);



}
void draw(){

bricks.zeichnen();
kreis.zeichnen();
kreis.kolrand();
rechteck.keyPressed();
rechteck.zeichnen();
kreis.kolobj();
rechteck.kolrand();


}
class Kreis{
Rechteck rechteck;
int x,y,r;
int vx,vy;
color c;
color c2;
int x2,y2,l2,b2;




Kreis(int x0, int y0, int r0, int x20, int y20, int vx0, int vy0, int l20, int b20, int c0, int c20){ // defintion varaibelne
x=x0; y=y0; r=r0;x2= x20; y2=y20;vx=vx0; vy=vy0; l2=l20 ;b2=b20;c=c0; c2=c20;
}

void zeichnen(){
fill(c2);circle(x,y,r);

fill(c);circle(x,y,r);
x=x-vx; y=y+vy;
fill(c2);circle(x,y,r);



}
//Kreis kollidiert mit Rändern
void kolrand(){
if( (x+r/2>=width) || (x-r/2<=0) ){ vx=-vx;}
if( (y-r/2<=0) ){ vy=-vy;}
}
void kolobj(){
//Kollision an den Objekten
if (y>=y2 && y<=y2+b2) { //Kreis ist über oder unter Rand
if(abs(x2-x-l2) <=r/2 || abs(x-x2) <=r/2){ vx=-vx;}
}
if (x>=x2 && x<=x2+l2) { //Kreis ist über oder unter Rand
if(abs(y-y2-b2) <=r/2 || abs(y-y2) <=r/2){ vy=-vy;
}
}
}

}
class Rechteck{
int x,y,r;
int vx,vy;

int x2,y2,l2,b2;
int vx2,vy2;
color c;

Rechteck(int x0, int y0, int r0,int x20, int y20, int l20,int b20, int vx0, int vy0, int vx20, int vy20, int c0){
x=x0; y=y0; r=r0;x2=x20; y2=y20; l2=l20; b2=b20; vx=vx0; vy=vy0;vx2= vx20; vy2=vy20; c=c0;
}
void zeichnen(){
fill(c);
rect(x2,y2,l2,b2);
}

void kolrand(){
if(x2<=0){
x2=x2+vx2;
}
if(x2+l2>=width){
x2=x2-vx2;
}
}

void keyPressed(){
if (keyCode == RIGHT) {x2=x2+vx2;}

if( keyCode == LEFT) {x2=x2-vx2;}
}
}

danke
 

KonradN

Super-Moderator
Mitarbeiter
Code bitte in Code-Tags posten. Dazu einfach den Knopf </> links oberhalb des Eingabebereichs nutzen!
Und dann wirklich den ganzen Code posten. Das erste wird ja auch in irgend einer Klasse sein. So frei im Raum sind ja keine Variablen und Methoden zu erstellen.

Und wir hatten ja in einem anderen Thread schon erste Hinweise gegeben (sorry - hatte keine Zeit, da in Ruhe zu antworten!)

Das erste, was Du machen musst, ist eine Bereinigung. Variablen gehören nur da hin, wo sie auch wirklich sinn machen. Dazu sollten diese auch so erkenntlich sein, dass klar ist, was diese bedeuten.

Was hat denn z.B. ein Kreis alles an Werten, die da übergeben werden?
int x0, int y0, int r0, int x20, int y20, int vx0, int vy0, int l20, int b20, int c0, int c20)
Das ist einfach unverständlich und dann ist es auch nicht so einfach möglich, da etwas sinnvolles vorzuschlagen.

Einen Mittelpunkt und einen Radius kann ich verstehen. Also x0/y0 und r0 -> wozu das 0? x,y,r wären da ausreichen.
Dann evtl. eine Geschwindigkeit in v in x und y Richtung. dann haben wir vx und vx.
Aber sonst? Was brauchst Du sonst noch? Das kannst Du evtl. etwas erläutern.

Ähnlich beim Rechteck!

Wie kann dann eine Prüfung der Kollision aussehen? Da kann man z.B. im Kreis eine Methode haben wie:
Java:
void kolobj(Rechteck obj){
    //Kollision an den Objekten
    if (y>=obj.y2 && y<=obj.y2+obj.b2) { //Kreis ist über oder unter Rand
        if(abs(obj.x2-x-obj.l2) <=r/2 || abs(x-obj.x2) <=r/2) {
            vx=-vx;
        }
    }
    if (x>=obj.x2 && x<=obj.x2+obj.l2) { //Kreis ist über oder unter Rand
        if(abs(y-obj.y2-obj.b2) <=r/2 || abs(y-obj.y2) <=r/2) {
            vy=-vy;
        }
    }
}

Ich habe da erst einmal das Objekt, mit dem die Kollision geprüft werden soll, angegeben. Aber da ich die ganzen Variablen nicht kenne: Keine Ahnung, was denn die Eigenschaften vom obj sind. Vermutlich x2, y2, l2 und b2
Das ist aber geraten - weil ich bei dem Code keine Lust habe. da tiefer rein zu schauen.

Dabei ist es egal, ob das Objekt dort übergeben wird, oder ob es dem Kreis übergeben wird. Du kannst die Objekte ja alle erzeugen und dann gegenseitig zuweisen. Dann hast Du etwas wie dies im Kreis. Und bei der Erstellung wird dann halt mittels eines AUfrufs von setObject das Rechteck zugewiesen.:
Java:
private Rechteck obj;

public void setObject(Rechteck obj) {
    this.obj = obj;
}

void kolobj(){
    //Kollision an den Objekten
    if (y>=obj.y2 && y<=obj.y2+obj.b2) { //Kreis ist über oder unter Rand
        if(abs(obj.x2-x-obj.l2) <=r/2 || abs(x-obj.x2) <=r/2) {
            vx=-vx;
        }
    }

    if (x>=obj.x2 && x<=obj.x2+obj.l2) { //Kreis ist über oder unter Rand
        if(abs(y-obj.y2-obj.b2) <=r/2 || abs(y-obj.y2) <=r/2) {
            vy=-vy;
        }
    }
}


An der Stelle ggf. noch ein kleiner Hinweis zu dem vermultichen Verständnisproblem:
Java:
x=100; y=350; r=25;
x2=200; y2=600; l2=150; b2=20;
vx=2; vy=2; vx2=2; vy2=2;
c=200; c2=100;
x3= 40 ; y3= 40;
l3=50; b3=20;
kreis = new Kreis(x,y,r,x2,y2,vx,vy,l2,b2,c,c2);
rechteck = new Rechteck(x,y,r,x2,y2,l2,b2,vx,vy,vx2,vy2,c2);

Es gibt in einer Klasse, dessen Namen wir nicht kennen einen Haufen Variablen. x, y, r, .....
Diesen weist Du werte zu. Dann kommt die Zeile mit dem new Kreis. Hier wird ein neuer Kreis erzeugt mit den Werten aus diesen Variablen!
Ebenso beim Rechteck.

Stell Dir vor, Variablen sind Zettel. Da hast Du dann einen Ordner mit vielen Zetteln für x, y, r, ... Und da schreibst DU dann Zahlen drauf.

Dann wird ein Kreis erstellt, d.h. ein neuer Aktenordner mit neuen Zetteln wird erstellt. Und da werden die Werte von den Zetteln des anderen Ordners übergeben und eingetragen.

Das dann auch noch für Rechteck....

Du hast also drei Ordner mit Zetteln. Auf einem Zettel in jedem Ordner steht oben gross: X
Jetzt nimmst Du einen Bleistift und radierst den vorhandenen Wert weg und schreibst einen neuen Wert hin.
==> Dadurch ändert sich absolut nichts an den Zetteln in den anderen Ordnern.


Oder anders vorgestellt. Objekte sind jetzt Menschen. Wir haben Karteikarten. Und du hast jetzt Karteikarten mit x, y, r und da steht jeweils ein Wert.
Jetzt sagst Du zu Deinem Vater: Du bist jetzt ein Kreis. Du hast folgende Karten: x = .. , y = ..., r= ....
Dein Vater notiert dies auf seinen Karteikarten.

Dann geht ihr getrennte Wege und du änderst die Werte auf deinen Karteikarten: Da verändert sich nichts auf den Karten deines Vaters!

Daher sind die Werte, die dann ja nie mehr verändert werden, immer schön auf dem Startwert.
 

tyno1584

Mitglied
Oke, danke vielmals, ich habe eben auch noch eine dritte Klasse aber die hat nichts mit diesen Objekten zu tun, deswegen habe ich sie nicht auch noch dazu geschickt und die ganzen variablen waren Versuche, dass ich es hinbekomme, dass die Kollision funktioniert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Problem bei Kollision zwischen Array-objekten! Java Basics - Anfänger-Themen 2
C Kollision zweier Rechtecke, Schnittpunkte bestimmen Java Basics - Anfänger-Themen 25
dome385 Ball Ball Kollision physikalisch korrekt Java Basics - Anfänger-Themen 5
L Grafik Kollision Detektierung Java Basics - Anfänger-Themen 4
J Kollision eines Kreises mit einem 270° Winkel im 2D-Raum Java Basics - Anfänger-Themen 29
B Kollision tritt nie ein ? Java Basics - Anfänger-Themen 15
D Frage zu Kollision Java Basics - Anfänger-Themen 3
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2
J Ball->Wand Kollision - Ball bleibt an Decke und Boden hängen Java Basics - Anfänger-Themen 2
J Tilemap Kollision Java Basics - Anfänger-Themen 25
T Kollision bei Wänden Java Basics - Anfänger-Themen 2
M OOP Kollision entdecken Java Basics - Anfänger-Themen 4
TheKing Tile Map - Kollision Java Basics - Anfänger-Themen 2
V Rennspiel, Kollision Java Basics - Anfänger-Themen 19
I Kollision zweier Rechtecke Java Basics - Anfänger-Themen 9
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
N Vererbung Queue bestehend aus Superclass- und Subclass-Objekten Java Basics - Anfänger-Themen 7
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7
YAZZ Schlüsselworte Töten von Objekten Gameover Java Basics - Anfänger-Themen 2
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Zeppi OOP Array in Objekten Java Basics - Anfänger-Themen 4
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
A Klasse Menge mit Objekten der Klasse Person Java Basics - Anfänger-Themen 8
S Auf Array aus Objekten zugreifen? Java Basics - Anfänger-Themen 1
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
A Auf Eigenschaften von Objekten anderer Klassen zugreifen Java Basics - Anfänger-Themen 5
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
D Operatoren Mit Objekten rechnen Java Basics - Anfänger-Themen 7
E Datentypen Einfügen von Objekten in eine Map Java Basics - Anfänger-Themen 2
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
B ID von unterschiedlichen Objekten bekommen? Java Basics - Anfänger-Themen 2
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
PaperHat Programmieraufgabe - Objekte in Objekten Java Basics - Anfänger-Themen 2
L Rechnen mit Objekten Java Basics - Anfänger-Themen 3
S werte von objekten in schleife verändern Java Basics - Anfänger-Themen 14
D Zusammenarbeit von Objekten Java Basics - Anfänger-Themen 1
Y Begrenzte Anzahl an Objekten? Java Basics - Anfänger-Themen 12
Kornblume Nulltyp eines Arrays von Objekten? Java Basics - Anfänger-Themen 10
A Frage zur Aufgabe Uhrzeit einstellen mit Objekten Java Basics - Anfänger-Themen 18
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
arjoopy Kapselung Übergabe von Objekten aus ArrayList Java Basics - Anfänger-Themen 4
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
M Speichern von Objekten - Verfügbarkeit bei erneutem Aufruf Java Basics - Anfänger-Themen 3
R Methoden Methode ruft Methode auf, ruft Methode auf (mit Objekten) Java Basics - Anfänger-Themen 4
S Serialisierung: Laden von Objekten - Risiken? Java Basics - Anfänger-Themen 4
Shizmo PriorityQueue mit Objekten Java Basics - Anfänger-Themen 10
E Instanzieren von Objekten verkürzen Java Basics - Anfänger-Themen 1
F Interaktion von Objekten verschiedener Klassen... Java Basics - Anfänger-Themen 13
D Effiziente Verwaltung der Objekten und Unterobjekten Java Basics - Anfänger-Themen 18
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
L Subklasse von ArrayList nur mit bestimmten Objekten füllen Java Basics - Anfänger-Themen 1
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
S Problem mit augabe von Objekten Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
W Was passiert mit Objekten die nicht in Objektvariablen initialisiert werden ? Java Basics - Anfänger-Themen 3
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
S Liste mit Objekten und Listen Java Basics - Anfänger-Themen 9
Y Gleiche Arrays aus einem Array mit Objekten Java Basics - Anfänger-Themen 5
K Min eines Arrays mit Objekten Java Basics - Anfänger-Themen 6
M Array mit Objekten lässt sich nicht auslesen Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
J Methoden Einfügen von Objekten nach Alphabet in ArrayList funktioniert nicht Java Basics - Anfänger-Themen 2
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
TheSorm Koordinaten von gedrehten Objekten Java Basics - Anfänger-Themen 4
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
B Aliasing bei null-Objekten Java Basics - Anfänger-Themen 3
O Java Erzeugung von neuen Objekten Java Basics - Anfänger-Themen 1
J Verständnisfragen zu dem Thema Objekten Java Basics - Anfänger-Themen 7
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
O Größe von Objekten Java Basics - Anfänger-Themen 5
Y Variable Menge von Objekten erzeugen und mit ihren Attributen rechnen Java Basics - Anfänger-Themen 7
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8
F Umgang mit referenzierten Objekten bei ArrayList Java Basics - Anfänger-Themen 1
M Löschen von Objekten während Iteration über Liste Java Basics - Anfänger-Themen 9
E Array von Objekten einer selbst definierten Klasse mit eindeutigem Namen Java Basics - Anfänger-Themen 2
C For schleife mit Array und Objekten Java Basics - Anfänger-Themen 17
kaoZ Input/Output Android : Deserialisieren von mehreren Objekten in einer Datei Java Basics - Anfänger-Themen 0
U Übergabe von Objekten Java Basics - Anfänger-Themen 0
C Werte aus zwei Objekten miteinander vergleichen Java Basics - Anfänger-Themen 3
Joew0815 Interface JSON Objekte aus Java Objekten erzeugen Java Basics - Anfänger-Themen 9
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
E Erste Schritte Sortieren von Objekten in doppelt-verlinkter Liste Java Basics - Anfänger-Themen 9
R addition von 2 Array Objekten Java Basics - Anfänger-Themen 5
V Grundlegendes Zu Objekten/Klassen Java Basics - Anfänger-Themen 10
C Probleme mit neuen Objekten Java Basics - Anfänger-Themen 3
S Erste Schritte Bluej Automatisches Einfügen von Objekten Java Basics - Anfänger-Themen 4
D ID von Objekten in Arraylist Java Basics - Anfänger-Themen 3
B Datentypen Inhalt von Objekten miteinander vergleichen Java Basics - Anfänger-Themen 2
R Erste Schritte Objekte mit anderen Objekten als Inhalt Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben