 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 20.11.2003, 19:47 Titel: |
|
|
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 |
|
 |
Zyrian Super JLI'ler

Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 20.11.2003, 20:02 Titel: |
|
|
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  _________________ Schau mir in die Augen, Kleines. |
|
Nach oben |
|
 |
|
|
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
|