Wasserwiderstand in Box2D simulieren

9

Ich mache ein Spiel, bei dem der Spieler ein Boot mit dem Finger schleppt. Ich verwende Box2D für die Physikaspekte des Spiels. Insbesondere verwende ich b2MouseJoint , um das Berührungsereignis an das Boot anzuhängen, damit das Berührungsereignis das Boot zieht.

Aber es gibt ein Problem, dass die Art, wie sich das Boot bewegt, während es gezogen wird, nicht realistisch ist; Es kann einfach in jede Richtung gezogen werden, wo sich ein Boot in der realen Welt nur entlang seiner Länge bewegen kann, und es wird Wasserwiderstand geben, der es schwierig macht, die Richtung der Bootsbewegung zu ändern. Daher brauche ich eine Möglichkeit, Wasserwiderstand zu simulieren, um die Bootsbewegung realistisch zu machen.

Ist es möglich, es in Box2D zu simulieren? Lineare Dämpfung und Winkeldämpfung machen das Boot einfach schwer zu bewegen, aber ich möchte nur, dass das Boot in eine Richtung leicht zu bewegen ist und nur der Richtungsänderung standhalten sollte.

PS. Ich glaube nicht, dass ich meinen Code für diese Frage veröffentlichen muss, aber lassen Sie es mich wissen, wenn Sie den Codeausschnitt sehen wollen.

    
Lukman 15.01.2012, 01:33
quelle

2 Antworten

2

Das ist eigentlich keine triviale Sache, also ist eine "vollständige" Antwort ein bisschen viel zu hoffen. Hier ist ein Link zu einem Beispiel für ein Auto in box2d. Sehen Sie sich das Demoreel des Gentlemans an (das dritte Demo in der Rolle ist das relevanteste) und werfen Sie einen Blick auf seinen Quellcode. Seine Simulation ist etwas weiter fortgeschritten als das, was Sie erreichen müssen. Wenn Sie also verstehen, wie es funktioniert, haben Sie kein Problem damit, eine einfachere Version zu erstellen.

Es gibt eine Menge Code (verständlicherweise) in der box2d-Erweiterung von dougk16, daher kann es schwierig sein, genau herauszufinden, wie sein Auto funktioniert. Also hier ist ein einfacher Ausgangspunkt: Sie wollen einen Körper simulieren, der sich vorwärts und rückwärts bewegen kann, und auch drehen. Das ist also eine Kraft, die sich nach vorne oder hinten von der aktuellen Verkleidung Ihres Bootskörpers aus erstreckt, und ein Drehmoment, das den Körper nach links oder rechts dreht. Dies sollte alles sein, was Sie brauchen, um etwas zu bekommen, das ziemlich cool ist. Hier ist ein Pseudocode, der ein vernünftiger Ausgangspunkt wäre:

%Vor%

Ich beende meine Antwort mit einem weiteren Link , diesmal zu einem relevanten Tutorial. Es ist nicht so cool wie dougk16s Action-Script-Zeug, aber es könnte für Sie nützlicher sein, da es im Tutorial-Format ist.

    
Dan O 19.02.2012 04:21
quelle
1

Ich habe einen Vorschlag, der trivial sein könnte, aber viele Teilchen und daher vielleicht eine zusätzliche Verarbeitungsleistung erfordert. Sie könnten möglicherweise viele viele kleine Kreise mit Kollision erstellen, aber sie nicht gezeichnet werden. Sie würden also den simulierten Effekt von Wasser bekommen, aber nicht von Wasser. Die Größe der Kreise würde bestimmen, wie viele von Ihnen Sie, den Bildschirm und damit auch Ihre Leistung füllen müssen. Ich weiß, es ist ein bisschen eine Hack-Lösung, aber es kann einen Versuch wert sein. Sie würden ein glückliches Medium für die Größe der Kreise finden, die beide für gute Leistung und fließende Dynamik sorgen.

Hoppla, es scheint, dass jemand das bereits vorgeschlagen hat ... Entschuldigung.

    
Fred 16.02.2012 22:36
quelle

Tags und Links