Gibt es für Python eine gute, aktuelle Physikbibliothek für Linux? Ich komme gerade mit PyGame zu Python, aber PyGames Fehlen einer Physikbibliothek ist nicht cool. Ich habe ungefähr zwei Stunden damit verbracht, eine gute Physikbibliothek zu finden, aber es ist wie der Versuch, Öl zu schnappen; Ich kann es anscheinend nicht tun.
Ich brauche kaum eine Physik-Engine; alles, was ich tun möchte, ist, ein Objekt so zu programmieren, dass es "springt" und dann wieder auf den Boden fällt. Es scheint einige einfache Kollisionen zu geben (die PyGame handhaben kann, denke ich), aber es ist die eigentliche Sprungberechnung, die mich stößt. Wenn sich herausstellt, dass es keine brauchbaren Physikbibliotheken mehr gibt, scheint das Problem so einfach zu sein, dass ich einfach versuchen könnte, eine grundlegende Beschleunigungsgleichung und eine Gravitationsgleichung zu finden und diese anzuwenden ... möchte ich vermeiden um das zu tun.
Danke für jede Hilfe.
Die grundlegenden kinematischen Gleichungen der Physik sind alles, was Sie brauchen. Obwohl die Fragen bereits beantwortet wurden, würde ich es immer noch mit der Hand machen, nur weil ich eine Bibliothek benutze, scheint es übertrieben zu sein. Starten Sie die Gleichung für die Geschwindigkeit:
%Vor%Von dort integrieren wir, um Position zu finden:
%Vor%Ihr Sprung versucht, die y-Position des Charakters zu berechnen. Verwenden Sie diese Gleichung also, um die y-Position und das Spielzeug mit der anfänglichen Geschwindigkeit und Beschleunigung zu berechnen. Die Standardbeschleunigung aufgrund der Schwerkraft beträgt -9,8 Meter pro Sekunde ^ 2 (zumindest auf der Erdoberfläche - es sind verschiedene Planeten). Beginne mit der Anfangsposition, egal wie dein Charakter ist, oder 0, wenn der Boden für dich 0 ist.
Also:
%Vor% Wählen Sie eine Anfangsgeschwindigkeit v
-Wert, um die Aufwärtsbewegung bereitzustellen, wenn der Sprung beginnt, und t sollte die verstrichene Spielzeit sein, seit er zu springen begann.
Sie benötigen dazu nur eine Codezeile, keine Bibliotheken notwendig!
EDIT: Umgang damit, was Sie tun sollen, wenn Sie landen.
In der realen Welt wird also die Beschleunigung durch unausgewogene Kräfte verursacht. Schwerkraft wirkt immer auf dich ein, aber wenn du in der Erde stehst, wird sie durch die "normale Kraft" des Bodens konterkariert und aufgehoben. Solange der Boden, auf dem du stehst, stark genug ist, um dein Gewicht zu tragen, wird der Boden hochgedrückt und der Schwerkraft entgegengesetzt, und du wirst nicht nach unten beschleunigen. Wenn Sie also in Ihrem Spiel keine Kräfte simulieren, ändern Sie einfach die Beschleunigung von -9.8 auf 0, wenn Ihr Charakter den Boden berührt. Wenn der Boden flach ist, endet Ihr Sprung, wenn position = initial position
Laut den Installationsanweisungen der ODE-Website enthält das ODE-Paket jetzt Python Bindungen basierend auf CPython; und die pyoDE-Bindungen gelten als veraltet. Installationsanweisungen sind in der obigen Seite enthalten.
Dies ist standardmäßig für Python 2, aber ich konnte diese Bindung auch mit Python 3 arbeiten, mit einem Minimum an Arbeit (Mac OS X). Ich könnte sogar die Tutorials laufen lassen.
Das ist vielleicht nicht im Thema, aber nur zur Information, hier ist, was ich ändern musste:
OpCode.h
ändern, indem ich die #defines
für sqrt
, sin
, cos
, asin
und acos
löste (Zeilen 33-37, Dateiversion: 20. März 2001) . Dies ist ein hässlicher Hack, den ich brauchte, weil ODE selbst nicht mit Arithmetik doppelter Genauigkeit kompiliert hat, die man mit den Python-Bindings verwenden muss, wenn wir der Dokumentation auf der ODE-Seite vertrauen können. Ich musste setup.py
ändern, indem ich nach Zeile 18 die folgenden Zeilen hinzufügte:
Um die Tutorials auszuführen, habe ich im Verzeichnis demos
Das ist es.