Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Fehlersuche bei Physik-Problemen
Wenn Sie mit einer Physik-Engine arbeiten, können Sie auf unerwartete Ergebnisse stoßen.
Während viele dieser Probleme durch die Konfiguration behoben werden können, sind einige von ihnen das Ergebnis von Fehlern in der Engine. Für bekannte Bugs im Zusammenhang mit der Physik-Engine, siehe offene Physik-bezogene Probleme auf GitHub. Ein Blick in geschlossene Issues kann ebenfalls helfen, Fragen zum Verhalten der Physik-Engine zu beantworten.
Objekte bewegen sich mit hoher Geschwindigkeit durcheinander hindurch
This is known as tunneling. Enabling Continuous CD (Continuous Collision Detection) in the RigidBody properties can sometimes resolve this issue. If this does not help, there are other solutions you can try:
Machen Sie Ihre statischen Kollisions-Shapes dicker. Wenn Sie zum Beispiel einen dünnen Boden haben, unter den der Spieler nicht gelangen kann, können Sie den Collider dicker machen als die visuelle Darstellung des Bodens.
Ändern Sie die Shape des sich schnell bewegenden Objekts in Abhängigkeit von seiner Bewegungsgeschwindigkeit. Je schneller sich das Objekt bewegt, desto größer sollte die Shape für die Kollision außerhalb des Objekts sein, damit es zuverlässiger mit dünnen Wänden kollidieren kann.
Increase Physics Ticks per Second in the advanced Project Settings. While this has other benefits (such as more stable simulation and reduced input lag), this increases CPU utilization and may not be viable for mobile/web platforms. Multipliers of the default value of
60(such as120,180or240) should be preferred for a smooth appearance on most displays.
Gestapelte Objekte sind instabil und wackelig
Obwohl es wie ein einfaches Problem aussieht, ist eine stabile RigidBody-Simulation mit gestapelten Objekten in einer Physik-Engine schwer zu implementieren. Dies wird durch die Integration von Kräften verursacht, die gegeneinander wirken. Je mehr gestapelte Objekte vorhanden sind, desto stärker sind die Kräfte, die gegeneinander wirken. Dies führt schließlich dazu, dass die Simulation wackelig wird und die Objekte nicht mehr aufeinander liegen können, ohne sich zu bewegen.
Increasing the physics simulation rate can help alleviate this issue. To do so,
increase Physics Ticks per Second
in the advanced Project Settings. Note
that increases CPU utilization and may not be viable for mobile/web platforms.
Multipliers of the default value of 60 (such as 120, 180 or 240)
should be preferred for a smooth appearance on most displays.
In 3D, switching the physics engine from the default GodotPhysics to Jolt can also improve stability. See Using Jolt Physics for more information.
Skalierte Physik-Bodys oder Kollisions-Shapes kollidieren nicht korrekt
Godot unterstützt derzeit keine Skalierung von Physik-Bodys oder Kollisions-Shapes. Als Abhilfe können Sie die Ausdehnungen des Shapes ändern, anstatt seinen Maßstab zu ändern. Wenn Sie möchten, dass sich die Skalierung der visuellen Darstellung ebenfalls ändert, ändern Sie die Skalierung der zugrunde liegenden visuellen Darstellung (Sprite2D, MeshInstance3D, ...) und ändern Sie die Ausdehnung der Kollisions-Shape separat. Vergewissern Sie sich in diesem Fall, dass die Shape der Kollision kein Child der visuellen Darstellung ist.
Since resources are shared by default, you'll have to make the collision shape resource unique if you don't want the change to be applied to all nodes using the same collision shape resource in the scene. This can be done in two ways:
In the editor, by clicking in the CollisionShape resource dropdown in the inspector, then changing its size.
In a script, by calling
duplicate()in a script on the collision shape resource before changing its size.
Dünne Objekte sind wackelig, wenn sie auf dem Boden liegen
Dafür kann es einen von zwei Gründen geben:
Die Kollisions-Shape des Bodens ist zu dünn.
Der Shape des RigidBodys ist zu dünn.
Im ersten Fall kann dies dadurch gemildert werden, dass die Shape des Bodens für die Kollision dicker gemacht wird. Wenn Sie zum Beispiel einen dünnen Boden haben, unter den der Spieler nicht gelangen kann, können Sie den Collider dicker machen als die visuelle Darstellung des Bodens.
Im zweiten Fall lässt sich dies in der Regel nur durch eine Erhöhung der Physiksimulationsrate beheben (da eine Verdickung der Shape zu einem Unterschied zwischen der visuellen Darstellung des RigidBodys und seiner Kollision führen würde).
In both cases, increasing the physics simulation rate can also help alleviate
this issue. To do so, increase
Physics Ticks per Second
in the advanced
Project Settings. Note that this increases CPU utilization and may not be viable
for mobile/web platforms. Multipliers of the default value of 60 (such as
120, 180 or 240) should be preferred for a smooth appearance on most
displays.
Zylinder-Kollisions-Shapes sind instabil
Switching the physics engine from the default GodotPhysics to Jolt should make cylinder collision shapes more reliable. See Using Jolt Physics for more information.
Während des Übergangs von Bullet zu GodotPhysics in Godot 4 mussten die Zylinder-Kollisions-Shapes von Grund auf neu implementiert werden. Zylinder-Kollisions-Shapes gehören jedoch zu den am schwierigsten zu unterstützenden Shapes, weshalb viele andere Physik-Engines keine Unterstützung für sie bieten. Derzeit gibt es mehrere bekannte Bugs bei Zylinder-Kollisions-Shapes.
If you are sticking to GodotPhysics, we recommend using box or capsule collision shapes for characters for now. Boxes generally provide the best reliability, but have the downside of making the character take more space diagonally. Capsule collision shapes do not have this downside, but their shape can make precision platforming more difficult.
Die VehicleBody-Simulation ist instabil, insbesondere bei hohen Geschwindigkeiten
Wenn sich ein Physik-Body mit hoher Geschwindigkeit bewegt, legt er zwischen jedem Physik-Schritt eine große Strecke zurück. Wenn Sie beispielsweise die Konvention 1 Einheit = 1 Meter in 3D verwenden, legt ein Fahrzeug, das sich mit 360 km/h bewegt, 100 Einheiten pro Sekunde zurück. Bei der Default-Physiksimulationsrate von 60 Hz bewegt sich das Fahrzeug um ~1,67 Einheiten pro Physik-Tick. Das bedeutet, dass kleine Objekte vom Fahrzeug vollständig ignoriert werden können (aufgrund von Tunneling), aber auch, dass die Simulation bei einer so hohen Geschwindigkeit im Allgemeinen wenig Daten zur Verfügung hat.
Fast-moving vehicles can benefit a lot from an increased physics simulation
rate. To do so, increase
Physics Ticks per Second
in the advanced Project
Settings. Note that this increases CPU utilization and may not be viable for
mobile/web platforms. Multipliers of the default value of 60 (such as
120, 180 or 240) should be preferred for a smooth appearance on most
displays.
Kollisionen führen zu Erschütterungen, wenn sich ein Objekt über Tiles bewegt
Dies ist ein bekanntes Problem in der Physik-Engine, das dadurch verursacht wird, dass das Objekt an den Kanten eines Shapes anstößt, obwohl diese Kante von einem anderen Shape verdeckt wird. Dies kann sowohl in 2D als auch in 3D auftreten.
Die beste Möglichkeit, dieses Problem zu umgehen, besteht darin, einen "zusammengesetzten" Collider zu erstellen. Das bedeutet, dass Sie statt einzelner Tiles, die ihre Kollision haben, ein einziges Kollisions-Shape erstellen, das die Kollision für eine Gruppe von Kacheln darstellt. Normalerweise sollten Sie zusammengesetzte Collider auf pro-Insel-Basis aufteilen (was bedeutet, dass jede Gruppe von sich berührenden Tiles ihren eigenen Collider erhält).
Die Verwendung eines zusammengesetzten Colliders kann in bestimmten Fällen auch die Performance der Physiksimulation verbessern. Da die zusammengesetzte Kollisions-Shape jedoch sehr viel komplexer ist, kann dies nicht in allen Fällen einen Performance-Gewinn bedeuten.
Tipp
In Godot 4.5 and later, creating a composite collider is automatically done
when using a TileMapLayer node. The chunk size (16 tiles on each axis
by default) can be set using the Physics Quadrant Size property in the
TileMapLayer inspector. Larger values provide more reliable collision,
at the cost of slower updates when the TileMap is changed.
Framerate sinkt, wenn ein Objekt ein anderes Objekt berührt
Dies liegt wahrscheinlich daran, dass eines der Objekte eine zu komplexe Shape für die Kollision verwendet. Konvexe Kollisions-Shapes sollten aus Performance-Gründen eine möglichst geringe Anzahl von Shapes verwenden. Wenn Sie sich auf die automatische Generierung von Godot verlassen, ist es möglich, dass Sie am Ende Dutzende, wenn nicht Hunderte von Shapes für eine einzige konvexe Kollisionsressource erstellt haben.
In einigen Fällen kann das Ersetzen eines konvexen Colliders durch ein paar primitive Shapes (Box, Kugel oder Capsule) zu einer besseren Performance führen.
Dieses Problem kann auch bei StaticBodys auftreten, die sehr detaillierte Trimesh (konkave)-Kollisionen verwenden. Verwenden Sie in diesem Fall eine vereinfachte Darstellung der Level-Geometrie als Collider. Dadurch wird nicht nur die Performance der Physiksimulation erheblich verbessert, sondern auch die Stabilität, da kleine Anbauten und Spalten nicht mehr von der Kollision berücksichtigt werden.
In 3D, switching the physics engine from the default GodotPhysics to Jolt can also improve performance. See Using Jolt Physics for more information.
Framerate suddenly drops to a very low value beyond a certain amount of physics simulation
This occurs because the physics engine can't keep up with the expected simulation rate. In this case, the framerate will start dropping, but the engine is only allowed to simulate a certain number of physics steps per rendered frame. This snowballs into a situation where framerate keeps dropping until it reaches a very low framerate (typically 1-2 FPS) and is called the physics spiral of death.
To avoid this, you should check for situations in your project that can cause excessive number of physics simulations to occur at the same time (or with excessively complex collision shapes). If these situations cannot be avoided, you can increase the Max Physics Steps per Frame project setting and/or reduce Physics Ticks per Second to alleviate this.
Die Physiksimulation ist unzuverlässig, wenn sie weit vom Ursprung der Welt entfernt ist
Dies wird durch Gleitkomma-Präzisionsfehler verursacht, die umso ausgeprägter werden, je weiter die Physiksimulation vom Ursprung der Welt entfernt ist. Dieses Problem wirkt sich auch auf das Rendering aus, was zu wackeligen Kamerabewegungen führt, wenn man weit vom Ursprung der Welt entfernt ist. Siehe Große-Welt-Koordinaten für weitere Informationen.