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

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

21

19.05.2013, 20:28

Das hat damit nichts zu tun. UserData ist dafür da, damit man von einem Physik-Objekt auch wieder zu seinen eigenen Modell-Informationen zurückkommt. Wäre ja blöd, wenn man dafür eigene Maps verwalten müsste, damit man weiß zu welchem "Game-Object" so ein kollidierender Body nun überhaupt gehört.
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]

22

21.05.2013, 09:47

Ich will dir ja nicht den ganzen Spaß der Fehler-und Problemlösung nehmen ;) Gucke dir aber mal die Fehlermeldung genauer an.

Ich bin mir nicht sicher, aber es sollte in der Manual auch stehen was du mit deinem ContactListener machen sollst. Dann schaue dir noch gleich an, was es mit diesen UserData eines Bodys auf sich hat.

Ich muss vielleicht auch dazu sagen, dass ich zwar schon mit Box2D aber nicht mit Farseer gearbeitet habe.


Kann es sein dass es in Farseer 3.3.1 keinen ContactListener gibt? Ich habe das gesamte Farseer Projekt durchsucht und keinen ContactListener gefunden ?(

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

23

21.05.2013, 09:53

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]

24

21.05.2013, 10:27

In dem Link steht auch nur dass man OnCollision und Separation nutzen soll. Es könnte ja aber mal vorkommen dass man BeginContact, EndContact, PreSolve oder PostSolve braucht.
Was ich bei der ganzen Sache nicht verstehe ist, warum sollte man die Methoden(in diesem Beispiel PreSolve) nicht ganz normal im Konstruktor einer Klasse einbauen:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
void PreSolve(Contact contact, ref Manifold oldManifold)
        {
            Fixture fixtureA = contact.FixtureA;
            Fixture fixtureB = contact.FixtureB;

            if (fixtureB.CollisionCategories == Category.Cat15)
            {
                contact.Enabled = false;
            }
        }

Oder wenn ich eine Klasse mit den Methoden erstelle, braucht man dann dieses ": ContactListener"? Ich verstehe nicht warum man diesen Teil brauchen sollte(außerdem funktioniert dieser Teil ja auch nicht da es "ContactListener" nicht im Farseer-Projekt gibt).

C#-Quelltext

1
class MyContactListener: ContactListener

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

25

21.05.2013, 10:33

http://farseerphysics.codeplex.com/documentation
http://box2d.org/manual.html
http://box2d.org/manual.html#_Toc258082975

Da sind dann auch deine ContactListener. Allgemein solltest du dich vielleicht mal durch die Doku lesen und Beispiele angucken. Dann solltest du dich denke ich besser zurecht finden.
„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.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

26

21.05.2013, 12:17

Was ich bei der ganzen Sache nicht verstehe ist, warum sollte man die Methoden(in diesem Beispiel PreSolve) nicht ganz normal im Konstruktor einer Klasse einbauen
Wie stellst Du Dir denn das vor? Dass der Konstruktor das aufruft? Das muss doch von Farseer aufgerufen werden, wenn es zu diesem Event kommt, nicht wann Du einmalig dazu gerade lustig bist. Du willst doch damit Events behandeln und die treten eben irgendwann auf.
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]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

27

21.05.2013, 13:42

Du solltest dringend Grundlagen lernen bevor du dich mit solchen Dingen beschäftigst. Bei ContactListener handelt es sich wohl um eine abstrakte Klasse welche dir die Methoden bereitstellt. Das Prinzip der Vererbung sollte man schon verstanden haben wenn man sich mit sowas beschäftigt. Woher soll die Physikengine denn sonst wissen wie sie deine Klasse benachrichtigen soll. Die Basisklasse legt vor welche Funktionen zur Verfügung stehen müssen und so kann die Engine wissen wie sie dich kontaktiert. Aber das sind Grundlagen die sitzen müssen. Du kannst hier nicht nach Dingen fragen wenn du die Grundlagen dahinter schon nicht kennst. So können wir dir nichts erklären und du hast selbst nichts davon außer 1000 neuen Fragen.
„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.“

28

21.05.2013, 13:59

Ich weiss was Vererbung ist. Jedoch kann meine Klasse "MyContactListener" nichts von der Klasse ContactListener erben da es die Klasse ContactListener nicht im Farseer-Projekt gibt. Ich habe nur eine Klasse namens ContactManager gefunden. Muss ich von dieser Klasse erben oder von welcher Klasse muss ich erben?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

29

21.05.2013, 14:05

Du sollst von gar nichts erben. Du sollst den Link oben lesen, den ich gepostet habe. Wenn Du den nicht verstehst, fehlt Dir offenbar das Wissen über Delegates und Events. Dieses musst Du Dir dann zunächst aneignen, denn für solche Ereignisse ist es nun mal essentiell.
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]

30

21.05.2013, 15:00

Ich habe den Link gelesen. So wie ich das verstanden habe brauche ich keine der 4 Methoden BeginContact, EndContact, PreSolve und PostSolve um eine Münze zu entfernen wenn es zu einer Kollision(Kontakt) zwischen Spielfigur und Münze kommt. Oder liege ich da falsch?
Ich wollte die Münze als Sensor machen damit es nicht zu einem Abpraller kommt bevor die Münze entfernt wird.

Werbeanzeige