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

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

1

10.05.2013, 10:01

Kollision zwischen zwei Quadraten

Wie bekomme ich das hin? Ich hab mir da einen Code ausgedacht, der gilt erstmal nur für eine Seite.

C-/C++-Quelltext

1
2
3
//Kollision mit player2
        if((player1.getPosition().x +25) < (player2.getPosition().x) && (player1.getPosition().y /*eine beliebige Zahl zwischen -25 und 25*/ == player2.getPosition().y))
            player1.move((-0.5 * Zeit.asMilliseconds()), 0);


Die Quadrate sind 50x50 groß und nicht gedreht. Irgendwie müsste ich in diesem Code irgendwas einbringen, dass abgefragt wird, ob einer von den 50 Pixeln an das zweite Quadrat anstößt, aber wie bekomme ich das hin, ich hab an der Stelle einen Kommentar. Oder geht das Ganze auch viel leichter?

Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

2

10.05.2013, 10:08

//Kollision mit player2
if((player1.getPosition().x +25) < (player2.getPosition().x) && (player1.getPosition().y /*eine beliebige Zahl zwischen -25 und 25*/ == player2.getPosition().y))
player1.move((-0.5 * Zeit.asMilliseconds()), 0);
Gibt da bei SFML eine viel bessere Lösung. Stichwort: getGlobalBounds()
Ansonsten musst du prüfen, ob sich die Kanten, keine Punkte, überschneiden. Mal dir die Rechtecke in Paint auf und wende logischen Denken an.
42 / Pi = 13,37

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

10.05.2013, 10:29

Unser Wiki hat eine Lösung;) Aber selbst überlegen ist sicherlich nicht schlecht. Kannst es dir ja mal aufmalen und überlegen und wenn du nicht drauf kommst im Wiki nachschauen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

4

10.05.2013, 11:19

Wie benutzt man denn getGlobalBounds()? Ich hab wirklich versucht, es herauszufinden, aber ich hab nichts im Internet dazu gefunden... Ich bräuchte nur den Syntax, und die Anwendung im Zusammenhang mit der Kollision.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

10.05.2013, 11:33

Wie wäre es, wenn Du Dir die Doku mal in einen Bookmark packen würdest?
http://www.sfml-dev.org/documentation/2.…bc3c0485cdb7409
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

6

10.05.2013, 11:44

Da steht aber nur, was die Funktion macht. Wie benutze ich sie dann aber? Es werden nur die globalen Koordinaten returned, Wie stelle ich damit fest, ob player1 player2 berührt und aus welcher Richtung, sodass ich ihn dann 'zurückschicken' kann?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

10.05.2013, 11:50

Guck doch mal was die Funktion zurück gibst. Das klickst du an. Dafür bewegst du deine Maus bis der Mauszeiger über dem dort stehenden Rückgabewert ist und drückst die linke Maustaste runter. Dann guckst du was dir die Klasse so liefert und was du damit anfangen kannst. Wenn du die Namen der Funktionen dieser Klasse nicht verstehst dann nimm dir ein Wörterbuch dazu.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

8

10.05.2013, 11:52

Bei mir werden die verschiedenen Funktionen heute nicht aufgelistet, ich weiß nicht, was ich falsch mache, gestern Abend ging das noch. Sonst würde ich ja nicht fragen, sondern einfach irgendwas mit den Funktionen versuchen :D

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

10.05.2013, 11:57

Die Dokumentation listet dir die Funktionen nicht auf? Vielleicht ist ja dein Internet kaputt. Solltest du vielleicht mal umtauschen;) Guck vielleicht noch mal nach. http://www.sfml-dev.org/documentation/2.…bc3c0485cdb7409
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

SwatzZ

Treue Seele

  • »SwatzZ« ist der Autor dieses Themas

Beiträge: 119

Beruf: Gymnasist (10. Klasse)

  • Private Nachricht senden

10

10.05.2013, 12:04

Welche meinst du?? Die darunter gehören doch, bis auf transform vielleicht, nicht zu getGlobalBounds() und bei getGlobalbounds() steht nur, was der liefert.

Werbeanzeige