Box collider funktioniert nicht mit rb.MovePosition?

1 Antwort

In Unity ist die `rb.MovePosition()` Methode dafür bekannt, dass sie manchmal Kollisionen nicht so gut behandelt wie die Standardphysik. Der Grund dafür ist, dass `rb.MovePosition()` die Position des Objekts "teleportiert", anstatt die Physik-Engine zur Bewegung zu verwenden.

Eine Möglichkeit, das Problem zu umgehen, wäre die Verwendung von `rb.AddForce()` anstelle von `rb.MovePosition()` für die Bewegung. Dadurch wird die Physik-Engine mehr in den Prozess einbezogen, und Kollisionen sollten korrekter behandelt werden.

Ein weiterer Ansatz könnte sein, sicherzustellen, dass die `Interpolation`-Einstellung für das `Rigidbody`-Objekt auf `Interpolate` oder `Extrapolate` gesetzt ist. Das könnte dazu beitragen, Kollisionen bei der Verwendung von `rb.MovePosition()` glatter zu machen.

Hoffentlich hilft dir einer dieser Tipps weiter!

Woher ich das weiß:eigene Erfahrung
schneckenschnel 
Fragesteller
 31.08.2023, 20:55

Interpolate und Extrapolate hat nicht funktioniert und bei "AddForce()" werde ich in eine Richtung geschleudert die erstens nicht stimmt und zweitens flieg ich aus dem terrain ins nichts. Vieleicht stimmt an den Berechnungen irgendwas nicht ganz.

0
Charmin  01.09.2023, 01:30
@schneckenschnel

Ja, `rb.AddForce()` verhält sich anders als `rb.MovePosition()`. Es fügt eine Kraft hinzu, die im Laufe der Zeit wirkt, anstatt die Position direkt zu ändern. Deshalb könnte die Bewegung unerwartet sein.

Du könntest dennoch versuchen, die Methode `rb.velocity` direkt zu setzen, was die Physik-Engine besser berücksichtigt als `rb.MovePosition()`.

Beispiel:

rb.velocity = forwardDirection * moveSpeed;

Denke daran, diese Zeile in der `FixedUpdate()` Methode zu platzieren, da `Rigidbody`-Operationen am besten in `FixedUpdate` behandelt werden.

Wenn du `rb.velocity` verwendest, musst du den Geschwindigkeitsvektor möglicherweise anpassen, um sicherzustellen, dass er in der richtigen Richtung und mit der richtigen Geschwindigkeit wirkt.

0