GameStudio: oft gestellte Physik-Fragen

Q: Wie kann ich lernen, die Physik anzuwenden?

A: Workshop 19 des Tutorials bietet eine Einführung in die Physik-Funktionen. Schauen Sie auch in das Beispiel earthball.c Hier finden Sie Beispiele einfacher Physik und im Projekt carlevel Fahrzeug-Physik.

F: Nach dem Setzen der Beschränkungen (Constraints) läuft mein Spiel sehr langsam. Was läuft da falsch?

A: Entweder durchdringen sich die beschränkten Objekte während der Erzeugung, oder die Constraint-Parameter wurden falsch gesetzt.

F: Wie kann ich eine Physik Entity bewegen?

A: Weisen Sie der Entity eine Geschwindigkeit, eine Kraft oder ein Drehmoment zu. Haben Sie ein Constraint zugewiesen, dann benutzen Sie die phcon_setmotor-Anweisung, um die Bewegung zu setzen. Versuchen Sie nicht, ihre Position oder Ausrichtung direkt per Abändern der x-, y-, z-Koordinaten oder ihrer Winkel zu verändern. Auch c_move oder c_rotate funktionieren bei Physik-Entities nicht.

F: Mein Objekt schwebt im Raum, aber wenn ich eine Kraft ansetze, bewegt es sich seltsam. Es wird schneller, verschwindet oder steht still?

A: Lange und dünne Objekte, oder sehr kleine Objekte können sich instabil bewegen. Verwenden Sie stattdessen besser ausbalancierte Objekte ausreichender Größe mit der Massenverteilung einer Kugel. Das kann durch die Anweisung phent_setmass festgelegt werden. Bitte bedenken Sie, dass es möglich und sogar empfehlenswert ist, verschiedene Typen für phent_settype und phent_setmass zu verwenden. Phent_settype legt die äußere Form für die Kollisionserkennung fest, während phent_setmass die Massenverteilung eines Objektes angibt, auf die Kräfte und Drehmomente sich auswirken.

F: Ich kann die Gravitation nicht setzen, obwohl ich ph_setgravity am Anfang der Main Funktion aufgerufen habe.

A: Die globalen Physik Parameter werden nach dem Laden eines Level zurückgesetzt. Deswegen führen Sie nach level_load ein wait(1) aus und setzen danach ph_setgravity für den neuen Level.

F: Mein Auto beschleunigt, aber manchmal biegen sich die Räder aus der eigentlichen Form?

A: Dies ist ein Problem, das auftritt, wenn beschränkte Objekte mit hohen Geschwindigkeiten rotieren. Einige Umgehungsmöglichkeiten sind die Masse, Gravitation oder Reibung der Reifen zu reduzieren. Oder Sie vergrößern die Reifen, was weniger Umdrehungen für die gleiche Entfernung zur Folge hat.

Q: Wenn ich bremse und gleichzeitig zur Seite lenke, verbiegen sich die Räder?

A: Gleichzeitiges Bremsen und Steuern bedingt eine seitwärts wirkende Kraft auf die Räder. Entweder Sie verringern die Reibung der Räder oder Sie beschränklen den Steuerungswinkel auf niedrigere Werte.

F: Meine Objekte bewegen sich zu schnell bzw. zu langsam?

A: Ist fps_lock aktiviert, läuft das Spiel mit unterschiedlicher Geschwindigkeit, je nach Performance des PCs. Desaktivieren Sie fps_lock.

Q: Meine Objekte neigen dazu, im Ruhezustand zu vibrieren oder sich zu drehen. Wenn sie in einer Ecke festsitzen, können sie sich sogar unkontrollierbar herumkreiseln.

A: Erhöhen Sie die sich selbst ausser Kraft setzenden Geschwindigkeitsbeschränkungen, beispielsweise mit ph_setautodisable(1.0,1.0,10,0.1);

Q: Ich habe ein kleines Level mit nur wenigen Objekten darin gemacht und habe einen Ball darin platziert. Wenn ich den Ball in die Luft kicke, sieht es so aus, als stösse er an mancher Stelle gegen eine unsichtbare Grenze.

A: Überprüfen Sie die Sky-Box um ihr Level. Möglicherweise kolliediert der Ball mit einer Seite oder der Decke der Sky-Box. Gibt es gar keine Sky-Box um ihr Level, wird die Levelgröße automatisch auf einen Bereich beschränkt, der alle Objekte enthält. In diesem Fall erstellen Sie in WED eine Sky-Box - einen ausgehöhlten Würfel mit Sky-Textur - und machen Sie diese groß genung damit der Ball die gewünschte Höhe erreichen kann.

Q: Ich lasse einen Ball über einen Parcours, der aus Modellen besteht, rollen. Manchmal springt der Ball aber merkwürdig oder stopt da wo er die Modelle berührt.

A: Das liegt an kleinen Lücken zwischen den Modellen. Lassen Sie diese sich ein wenig überschneiden.

Q: Wie kann ich Bewegung auf zwei Dimensionen beschränken?

A: Entweder verwenden Sie zwei unsichtbare Hindernisebenen, um eine Bewegung in der dritten Dimension zu vermeiden. Oder Sie vermessen die Position eines Objektes in der dritten Dimension und wenden eine kleine, zur Abweichung der gewünschten Ebene proportionale, Kraft an.

Q: Wie kann ich der Kollision eines bestimmten Physik-Objekts mit einem anderen Objekt vorbeugen?

A: Verwenden Sie phent_setgroup, um beide Objekte auf dieselbe Gruppe zu setzen. Objekte ein- und derselben Gruppe kollidieren nicht miteinander.

Siehe auch:

Gamestudio Physics, Physics constants, Physics Constraints

► Aktuelle Version Online