Ich versuche ein Spiel zu erstellen, in dem Objekte gezogen werden können, aber ich habe Probleme mit der Physik. Bei starren Körpern mit ähnlichen Massen drücken sie sich beim Ziehen manchmal gegenseitig durch und verursachen unerwünschte Bewegungen. Hier ist eine Demo .
Ich möchte dies nur mit der in Unity 3D integrierten Physik tun .
In der Demo können Sie mit der Maus auf Objekte klicken und diese ziehen. Die Zylinder haben alle Kastenkollider und Massen von 10000. Sie haben auch verschiedene Einschränkungen in Abhängigkeit von ihrer Ausrichtung (keiner kann sich drehen und alle sind in x oder y eingeschränkt). Die Kugel hat eine Masse von 1, einen Kugelkollider und eine Az-Bedingung.
Die Kugel und die Zylinder interagieren gut. Das Übereinanderziehen der Zylinder führt jedoch zu einer Überschneidung. Ich will das nicht!
Bei den Zylindern ist die Interpolation auf "Interpolieren" und die Kollisionserkennung auf "Kontinuierlich" eingestellt. Ich habe das Skript 'DontGoThroughThings' auf alle Zylinder geworfen , aber es scheint nichts zu bewirken . Für die Einstellung der Geschwindigkeit der Starrkörper habe ich beide folgenden Zeilen mit im Grunde dem gleichen Ergebnis verwendet:
rb.AddForce(speed * diff * Time.deltaTime - rb.velocity, ForceMode.VelocityChange);
//rb.velocity = speed * diff * Time.deltaTime;
Ohne meinen eigenen Kollisionserkennungscode zu schreiben, habe ich keine Ideen mehr. Gibt es eine einfache Einstellung oder etwas, das ich verpasst habe?
Im Zusammenhang mit dem erläuterten Kontext ist hier eine genauere Frage: "Wie kann ich die Zylinder in meiner Demo dazu bringen, sich nicht gegenseitig zu bewegen?"