Die Schwerkraft in der Unity-Physik-Engine geht nur in eine Richtung und wird im Menü Physik im Menü Bearbeiten-> Projekteinstellungen gesteuert.
Wenn Sie etwas anderes als das tun möchten, müssen Sie Ihre eigene Schwerkraft implementieren.
Grundsätzlich können Sie dem Objekt, das der Schwerpunkt sein soll, einen Kugelcollider hinzufügen. Der Collider sollte den gesamten Bereich umfassen, in dem Objekte von der Schwerkraft des Objekts beeinflusst werden sollen. Immer wenn ein Objekt mit dieser "Einflusssphäre" kollidiert, übt man eine Kraft auf es aus. Sie üben weiterhin eine Kraft auf sie aus, solange sie sich im Einflussbereich befindet.
Die Gravitationskonstante, die Sie verwenden, kann von Ihnen angepasst werden. Die für Berechnungen in der realen Welt verwendete Standardkonstante lautet jedoch:
F = Gm1m2 / r2
Das heißt:
Kraft = Gravitationskonstante * Masse des Objekts 1 * Masse des Objekts 2 / Abstand zwischen den beiden Objekten im Quadrat.
Beachten Sie, dass die Gravitationskonstante nicht 9,81 beträgt. Das ist die durch die Schwerkraft verursachte Beschleunigung an der Erdoberfläche.
Habe den Planeten / die große Kugel mit einem Kreiscollider, gib ihr ein Kind. Nun sollte der Planet entweder als Planet oder als statisches kosmisches Objekt markiert sein und das Kind sollte als Einflussbereich gekennzeichnet sein. Jetzt sollte das kleine Objekt einen starren Körper und eine Kugel mit einem isTrigger haben.
Setzen Sie ein Skript mit einem On-Enter / Enterstay-Trigger auf den Planeten. Wenn es sich um eine Einflusssphäre handelt, sollte es in diese Richtung gezogen werden.
Andernfalls können Sie es umgekehrt tun. Aber in jedem Fall wäre dies wahrscheinlich besser, da Sie höchstwahrscheinlich die Anziehungskraft von Planet zu Planet verändern möchten.
quelle
Was andere sagten: Die Schwerkraft auf Einheit ist nur in eine bestimmte Richtung gerichtet. Vielleicht sollten Sie stattdessen die Schwerkraft vollständig deaktivieren und eine Kraft schreiben, die die kleine Kugel in Richtung der großen Kugel bewegt.
quelle