Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.04.2012, 13:42

SFML Collisionen , aber wie?

Hallo

Da ich in SFML einen Pacman klon erstellen wollte komme ich am Thema Kollisionen nicht vorbei.
Ich habe schon gegoogelt aber nichts für Anfänger gefunden ...
Wie realisiert man am besten Kollisionen ?

2

08.04.2012, 13:45

Guck doch einfach mal in dem Wiki Artikel

https://www.spieleprogrammierer.de/wiki/…isionserkennung

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

3

08.04.2012, 13:56

Da steht zwar eine Implementierung aber z.B

C-/C++-Quelltext

1
2
3
4
5
6
7
8
bool rectangleCollision(const Vector& position1, float width1, float height1,
                        const Vector& position2, float width2, float height2)
{
    return position1.x < position2.x + width2  &&
           position2.x < position1.x + width1  &&
           position1.y < position2.y + height2 &&
           position2.y < position1.y + height1;
}


Aber iwie steige ich da nicht durch ... wie gesagt ein Anfänger

FSA

Community-Fossil

  • Private Nachricht senden

4

08.04.2012, 14:40

Zeichne es dir mal auf. Dann verstehst du es sehr leicht ;)

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

5

08.04.2012, 15:06

Hey Danke nochmal ^^
jetzt hab ich es verstanden

C-/C++-Quelltext

1
if(rectangleCollision(pos,454,340,Wall,100,768) == true)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

08.04.2012, 15:10

Den Vergleich mit true oder false kannst (und solltest) du dir übrigens sparen.
Schreib es lieber so:
if(rectangleCollision(pos,454,340,Wall,100,768))
wenn es false sein soll benutzt du den !-Operator.
if(!rectangleCollision(pos,454,340,Wall,100,768))
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

7

08.04.2012, 15:57

Kennst du sf::Rect::Intersects?

MfG
Check

8

08.04.2012, 16:07

Was macht das ?? 8|

9

08.04.2012, 16:38

Wenn ich mich nicht irre, enthalten die rectangleCollision-Implementierungen aus dem Wiki einen Fehler.

Richtig wäre:

C-/C++-Quelltext

1
2
3
4
5
6
7
bool rectangleCollision(const Vector& position1, float width1, float height1,
                        const Vector& position2, float width2, float height2)
    return !(position1.x < position2.x + width2  ||
             position2.x < position1.x + width1  ||
             position1.y < position2.y + height2 ||
             position2.y < position1.y + height1);
}

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

10

08.04.2012, 18:20

Kennst du sf::Rect::Intersects?

Was macht das ?? 8|

Das ist eine Methode von sf::Rect. Die nimmt dir die Kollisionsberechnung ab. ;)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige