Ich arbeite mit AndEngine mit Box2d-Erweiterung, aber auch allgemeine Antworten oder eine Konzeptidee werden geschätzt.
Ich habe federähnliche Objekte in einer 2D-Seitenansicht, die ich Teil der Physiksimulation sein möchte. Ich benutze lineare Dämpfung, um die "Feder" langsam fallen zu lassen. Dies ist möglicherweise keine gute Idee, vielleicht sollte ich bei jedem Update lieber Kraft anwenden, aber dies funktioniert trotzdem und lässt das Objekt "leicht" aussehen und es fühlt sich an, als gäbe es Luft mit Widerstand.
Wie kann ich nun die Objekte tatsächlich wie Federn aussehen lassen, die durch die Luft fallen?
Insbesondere suche ich nach zwei Arten von Objekten: Lang mit geringer Dichte, die sich in einer langsam schwingenden Bewegung nach unten bewegen sollten, und quadratischen Objekten, die nur zufällig die Flugbahn ändern würden. Es wäre großartig, wenn dies eine Simulation sein könnte und die Länge ein Parameter wäre - je länger das Objekt ist, desto mehr würde es schwingen. Im Moment möchte ich Federn, Blätter und Schneeflocken in einer Cartoon-Welt simulieren.
Antworten:
Ähnlich wie bei der Mondlandung sollten Sie sie vortäuschen . Die Physik der durch Flattern, Tumble und Wirbel induzierten Autorotation ist komplex. Es gibt Artikel zur Simulation dieses Effekts , und sie produzieren einige schöne Java-Animationen .
Aber ich würde noch weiter in Ihre Fälschung gehen und so etwas wie eine wachsende Sinuswelle implementieren , um die Bewegung zu animieren.
Natürlich sollten Sie die Startwerte, die Rate der unabhängigen Erhöhung von Amplitude und Frequenz anpassen, bis Sie etwas erhalten, das näher an Ihren Wünschen liegt. Sie möchten etwas Zufälligkeit, um es interessant zu machen. Wie Ihr Beispiel zeigt, können außerdem sehr leichte Objekte mit großer Oberfläche tatsächlich in der Nähe der Wellenränder aufsteigen. Wellen über einer bestimmten Amplitude sollten also beginnen, einen Wobbelwert mit einem kleinen begrenzten Maximalwert zu berücksichtigen.
Je weniger Masse und Oberfläche ein Objekt hat, desto mehr erhöhen Sie die Amplitude und Frequenz der Sinuswelle. Die größere Masse und die geringere Oberfläche sollten zu einer Verringerung von Amplitude und Frequenz führen.
quelle