Spiel-Grundlagen selbst austüfteln: Kollisionen?

Warrior7777

Bekanntes Mitglied
Hallo miteinander

bevor Ihr Euch aufregt, weil zum Thema Kollisionen schon viele Threads bestehen: Ich hab von Quaxlis Tutorial gehört und werde es mir später mal ansehen. Vorher würde ich allerdings mal gerne ausprobieren, wie weit ich ohne Konzepte der Spielprogrammierung käme. Ich denke auch, dass ich so mehr lerne und besser verstehe, was in den Methoden abläuft.
In anderen Beiträgen wurde die Methode intersetcs() oder so der Klasse Rectangle erwähnt. Wie funktioniert sie? Könnte man sie bei Bedarf (eben um selbst zu tüfteln 🙂) selbst nachbauen oder basiert sie auf plattformabhängingen Ressourcen?

Momentan löse ich Kollisionen mit getComponentAt(x, y). Dafür dauert jedoch 1 updateCoordinates(), render() Durchlauf ca. 100 ms (und das bei 2 Spielelementen: 1Spieler, 1Wand...). Die Performance sollte sich noch sehr viel verbessern lassen.

Gruss und schönes Wochenende
Warrior7777
 
Kann man doch prima im Sourcecode nachlesen:
Java:
    /**
     * Determines whether or not this <code>Rectangle</code> and the specified
     * <code>Rectangle</code> intersect. Two rectangles intersect if
     * their intersection is nonempty.
     *
     * @param r the specified <code>Rectangle</code>
     * @return    <code>true</code> if the specified <code>Rectangle</code>
     *            and this <code>Rectangle</code> intersect;
     *            <code>false</code> otherwise.
     */
    public boolean intersects(Rectangle r) {
        int tw = this.width;
        int th = this.height;
        int rw = r.width;
        int rh = r.height;
        if (rw <= 0 || rh <= 0 || tw <= 0 || th <= 0) {
            return false;
        }
        int tx = this.x;
        int ty = this.y;
        int rx = r.x;
        int ry = r.y;
        rw += rx;
        rh += ry;
        tw += tx;
        th += ty;
        //      overflow || intersect
        return ((rw < rx || rw > tx) &&
                (rh < ry || rh > ty) &&
                (tw < tx || tw > rx) &&
                (th < ty || th > ry));
    }
 

Neue Themen


Zurück
Oben