JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Kollisionserkennung
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 20.11.2003, 19:47    Titel: Antworten mit Zitat

Nur so als Tipp ;)

Code:

BOOL Sprite::TestCollision(vector <Sprite> vecSprite)


Ich würde das mit einer Referenz machen:

Code:

BOOL Sprite::TestCollision(vector <Sprite> & vecSprite)


Das hat den Vorteil, dass kein neuer Vektor erstellt wird und es somit schneller läuft. Am Funktionsaufruf und an der Funktion selber brauchst du nix ändern. Auch würde ich im Vektor Zeiger auf Sprites speichern aus genau dem gleichen Grund.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Zyrian
Super JLI'ler



Anmeldedatum: 30.08.2003
Beiträge: 321
Wohnort: Essen
Medaillen: Keine

BeitragVerfasst am: 20.11.2003, 20:02    Titel: Antworten mit Zitat

Das mit den Zeigern im Vektor hab ich schon probiert.

Code:

BOOL Sprite::TestCollision(vector <Sprite*> &vecSprite)
{
   
   for(int i = 0; i < vecSprite.size(); ++i)
   {
      // Radius der BoundingBox berechnen
      int rx  = FrameWidth  / 2;
      int ry  = FrameHeight / 2;

      // Radius der BoundingBox des Sprites brechnen
      // Bounding Box verkleinern
      int Sp_rx = vecSprite[i]->GetWidth()  / 2 - vecSprite[i]->GetWidth()  / 8;
      int Sp_ry = vecSprite[i]->GetHeight() / 2 - vecSprite[i]->GetHeight() / 8;

      // die Mitte der Bounding Boxes berechnen
      int crx = x + rx;
      int cry = y + ry;
      int Sp_crx = vecSprite[i]->GetX() + Sp_rx;
      int Sp_cry = vecSprite[i]->GetY() + Sp_ry;


      // Abstand berechnen
      int dx = abs(Sp_crx - crx);
      int dy = abs(Sp_cry - cry);
      
      // Kollisionserkennung

      if(dx < rx + Sp_rx && dy < ry + Sp_ry)
      {
         // Kollision aufgetreten
         return TRUE;
      }
   }
   // keine Kollision aufgetreten
   return FALSE;
}


Dann aber wird der Bildschirm kurz schwarz und kehrt dann wieder zu Windows zurück Sad
_________________
Schau mir in die Augen, Kleines.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum