Hi Leute,
für ein Spiel in welchem der Spieler ein Fahrzeug durch eine Vertikal und Horizontal Scrollende Landschaft bewegt (Sicht: Vogelperspektive) versuche ich gerade eine möglichst genaue Kollisionserkennung umzusetzen. Auf dem
Spielfeld befinden sich mehrere Objekte wie zum Beispiel Häuser, Felsen und ähnliches welche dafür relevant sein
sollen.
Um eine Kollision zu erkennen hole ich mir von jedem Objekt (was auf dem Bildschirm ist) mit getBounds die Umrisse und überprüfe ob das Fahrzeug des Spielers sich mit einem dieser Objekte überschneidet.
Mein Problem ist jetzt aber folgendes:
Das Fahrzeug des Spielers kann sich drehen. Dies geschieht mit AffineTransform und Rotate.
Da AffineTransform und Rotate ja aber nur das Koordinatensystem drehen (glaube ich) bekomme ich bei getBounds
auf den gedrehten Körper (das Fahrzeug des Spielers) ein normales Rechteck zurück (welches nicht um x Grad gedreht ist wie das Fahrzeug).
Dies führt bei der Kollisionserkennung natürlich dazu, dass ich teilweise auch schon eine Kollision erkenne wenn das Fahrzeug nur nah an einem Gebäude vorbeifährt.
Was kann ich tun um dieses Problem zu lösen?
Ich habe mal gelesen, dass man auch eine Pixelgenaue Kollisionserkennung machen kann. Wie funktioniert sowas?
Vielen Dank im voraus.
Gruß
Paladin
für ein Spiel in welchem der Spieler ein Fahrzeug durch eine Vertikal und Horizontal Scrollende Landschaft bewegt (Sicht: Vogelperspektive) versuche ich gerade eine möglichst genaue Kollisionserkennung umzusetzen. Auf dem
Spielfeld befinden sich mehrere Objekte wie zum Beispiel Häuser, Felsen und ähnliches welche dafür relevant sein
sollen.
Um eine Kollision zu erkennen hole ich mir von jedem Objekt (was auf dem Bildschirm ist) mit getBounds die Umrisse und überprüfe ob das Fahrzeug des Spielers sich mit einem dieser Objekte überschneidet.
Mein Problem ist jetzt aber folgendes:
Das Fahrzeug des Spielers kann sich drehen. Dies geschieht mit AffineTransform und Rotate.
Da AffineTransform und Rotate ja aber nur das Koordinatensystem drehen (glaube ich) bekomme ich bei getBounds
auf den gedrehten Körper (das Fahrzeug des Spielers) ein normales Rechteck zurück (welches nicht um x Grad gedreht ist wie das Fahrzeug).
Dies führt bei der Kollisionserkennung natürlich dazu, dass ich teilweise auch schon eine Kollision erkenne wenn das Fahrzeug nur nah an einem Gebäude vorbeifährt.
Was kann ich tun um dieses Problem zu lösen?
Ich habe mal gelesen, dass man auch eine Pixelgenaue Kollisionserkennung machen kann. Wie funktioniert sowas?
Vielen Dank im voraus.
Gruß
Paladin