Jump to content
Unity Insider Forum

Problem mit zwei Rigidbody's


TiTo

Recommended Posts

Hallo liebe Community,

ich habe ein Problem und zwar verstehe ich es nicht wie ich das Verhalten von zwei Rigidbody's beeinflussen kann.

Folgendes Szenario: Ich habe ein Fahrzeug mit einer Masse von 1500 und ein Cube mit einer Masse von 10. Und wenn ich mein Cube in die Hand nehme und zum Auto laufe, dann kann ich mit dem Cube das Auto einfach auf die Seite schieben.

Wie löse ich das Problem?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Soweit ich weiß, igoniert der CharacterController interaktionen mit der Spielphysik. Versuch mal deinen Spieler mit Rigidbody zu bewegen. Also ohne CharacterController. Dafür müsstest du dann ein Script schreiben, welches deinen Rigidbody bewegt und somit auch deinen Spieler. Dann werden auch Physikalische Eigenschaften wie Masse bei deiner Kollision berücksichtigt. Der CharacterController macht dies jedoch nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

2 Sachen fallen mir dazu spontan ein, um konkreter zu werden, müsste ich deinen Aufbau nachstellen:

a ) Du bewegst den Cube mit RB nur indirekt über dein Parent. Vermutlich bewegst du dein Parent innerhalb der Updatemethode:
Beides ist für eine korrekte Simulation zwischen beiden RB schlecht. 

b ) Der RB deines Auto hat eine Reibungskraft gegenüber dem Boden, ist diese gering, dann kann dein Auto sehr leicht weggeschoben werden, die hohe Masse verhindert dies nicht.

Laut meiner Erfahrung ist das größere Problem aber a). Dadurch, daß du den Würfel nur indirekt bewegst und zusätzlich noch die Position über die Updatemethode des Transforms vermutlich ständig überschreibst, kann sich der der RB des Würfels nicht korrekt verhalten und wird durch den RB des Autos nicht gebremst und dadurch kann er ggf. das Auto ungehindert wegschieben.

Vermutliche Lösung:
Den RB des Cubes über Kraft bewegen oder über:
https://docs.unity3d.com/ScriptReference/Rigidbody.MovePosition.html

Sobald du aber den Parent des Cubes dafür verwendest, sind die Auswirkungen auf die Physikengine quasi "unvorhersehbar".

PS:
Zudem kannst du nicht einerseits einen CharacterController verwenden und gleichzeitig eine korrekte Simulation zwischen 2 RBs erwarten.
Der CC tut eben genau dies nicht. Aus diesem Grund gibt es spezielle Playercontroller für RBs.
Möchte man trotzdem einen CC verwenden, dann muss man eine Kraft die der CC auf die Außenwelt ausüben soll nachträglich hinzufügen. Ein Wegschieben eines anderen RB wäre dafür ein Beispiel:
https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html

Einfach einen RB an den CC zu hängen funktioniert da eben nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...