Rechteckskollision

Status
Nicht offen für weitere Antworten.

Fridolin

Bekanntes Mitglied
Hallo,
wenn ich zwei Rechtecke habe damit sind die Punkte der oberen Ecken gemeint und wissen will ob sie kollidieren
lade ich mir die Werte immer in zwei arrays und überprüfe dann so wobei xspeed und yspeed die veränderbare variable zum bewegen ist, boardx und boardy die momentane Position des Spielers und coinsx und coinsy die Punkte
der Rechtecke. Die Additionen +9 und +5 sind die Länge bzw Breite des Rechteckes, entspricht blocksizex und blocksizey. In der Methode seekcoin wird in einem anderen Array der Eintrag für die Münze(gehört zum Spiel, Rechteck ist gleich ein 5x9 Feld mit einem Oval) gelöscht und ein neuer hinein geschrieben damit beim nächsten repaint ein leeres Feld dort gezeichnet wird. Die senkrechten Zusammenstöße mit den Münzen funktionieren gut nur
bei den waagrechten geht es noch nicht. Ich hab mir gedacht das passiert weil die linke Ecke des Spielers niemals kleiner als die rechte Ecke der Münze und gleichzeitig größer als die linke Ecke der Münze sein kann wenn die Länge der Figur 9 und die Länge eines Feldes auch 9 ist, darum hab ich die Grenzen in x Richtung etwas geweitet. Etwas suchen nach Rechteckskollision und Kreiskollision im Internet hab ich auch schon probiert. Das ist bis jetzt alles nicht gegangen. Wer will mir helfen?

Danke und Liebe Grüße
Fridolin

Code:
for(int k = 0; k <= 18; k++)
{	
	for(int l = 0; l <= 13; l++)
	{
if((boardx4 + xspeed) < (coinsx[k][l] + 9) & (boardy4 + yspeed) < (coinsy[k][l] + 5) & (boardx4 + xspeed + 9) > (coinsx[k][l]) & (boardy4 + yspeed + 5) > (coinsy[k][l]))
{
int löschex = coinsx[k][l];
int löschey = coinsy[k][l];
dbg.setColor(Color.red);
dbg.drawRect(coinsx[k][l],coinsy[k][l],blocksizex,blocksizey);
seekcoin(löschex,löschey);
}

                }
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben