Jump to content
Unity Insider Forum

Collider für komplexe Bauteil


Leone

Recommended Posts

Hallo zusammen!

Gibt es eine Möglichkeit komplexe Objekte wie zum Beispiel einen Kaminofen auf einfache Art und Weise mit Collidern zu versehen?

Bisher habe ich mich sehr abgemüht Box Collidern manuel dem Objekt anzupassen, was mich sehr viel Zeit kostet.

Mesh Collider helfen mir leider nicht weiter da meine Anwendung dynamisch ist, sprich ich möchte den Ofen bewegen.

Außerdem passiert es mir, das andere Teile bei der Bewegung des Ofens nicht von diesem getroffen werden sondern einfach "hindurchfliegen".

Freue mich über jede nützliche Info 😃

Link zu diesem Kommentar
Auf anderen Seiten teilen

Willkommen!
Der Typ des Colliders hat nichts damit zu tun, ob du ihn bewegen kannst oder nicht. Auch ein MeshCollider bewegt sich mit dem Objekt mit, wenn das Objekt bewegt wird.

Damit etwas kollidiert, also nicht durch andere Objekte duchflutscht, müssen diese Objekte jeweils einen Collider haben. Das sollte ja klar sein.
Außerdem muss mindestens eines dieser Objekte einen Rigidbody haben, denn nur mit einem Rigidbody wird auch eine Kollision ausgewertet und die ganzen physikalischen Eigenschaften wie Reibung, Masse, Federung und Bremswirkung auf die Rotation oder Bewegung werden mit einberechnet.

Ob jetzt alle Objekte einen Rigidbody haben oder nur der Ofen, hängt davon ab, welche Objekte physikalische Eigenschaften haben sollen. Das kann man also nicht so ohne Weiteres sagen.
Man sollte aber an RB's sparen, denn jeder RB berechnet ja etwas und das kostet Leistung. Dinge, die nicht bewegt werden, brauchen keinen RB.

Wenn du dann ein Objekt mit einem RB bewegst, dann soltest du das mit physikalischen Befehlen machen. Also nicht mit Transform-Befehlen arbeiten, denn die Physik wird in einem anderen Zyklus berechnet, als der Rest, der ja abhängig von der Framerate ist. Somit könnte es bei schnellen Bewegungen schnell zu Durchtunnelungen kommen. Nutze also die Force oder die Velocity um den RB zu bewegen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo malzbie,

vielen Dank für die schnelle Antwort 😃 das war schonmal sehr hilfreich!

Vielleicht hätte ich erwähnen sollen, dass ich in meiner Anwendung mit VR arbeite und den Ofen daher mit einem VR-Controller greife, mithilfe des VRTK Tools und SteamVR über einen "Fixed Joint" und per "Precision Grab" . Folglich passiert es mir, dass bei zu schnellen Bewegungen die Kugeln im Ofen "durchflutschen" :D also muss ich ihn sehr langsam führen. 

Mit Mesh Collidern habe ich leider null Chance die Kugeln auch bei der kleinsten Bewegungen zur Kollision zu bringen. Sie fallen einfach durch. Also brauche ich die Box Collider.

Gibt es demnach eine Möglichkeit Box Collider für komplexe Geometrien zu erstellen? Ohne tausend kleine Box Collider an die Geometrie manuell anpassen zu müssen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zitat

Vielleicht hätte ich erwähnen sollen, dass ...

Ja!
Alles was wichtig ist, sollte auch erwähnt werden. ;)

OK.

Da du mit Box Collidern besser zurecht kommst, als mit dem Meshcollider, gehe ich davon aus, dass eine der Wände, die der Meshcollider umspannt, wirklich sehr dünn ist.
Und da du nicht über die Physik bewegst, kommt es eben zur Durchtunnelung.
Ich sehe da eigentlich nur die Möglichkeit, das du Fixed Timestep reduzierst.

https://docs.unity3d.com/Manual/class-TimeManager.html

Geh mal auf 0.005. Geht auch noch tiefer, aber irgendwann kostet das so viel Performance, dass du den Zyklus nicht mehr erreichen kannst.
Dieser Timestamp ist der Intervall, den die Physik durchfährt. Je kleiner der Wert ist umso öfter wird überprüft. Kostet aber jedes Mal Prozessorleistung.

Merke dir auch: Je dicker ein Collider ist umso eher wird eine Kollision erkannt. Wenn von der einen Überprüfung zur anderen Überprüfung ein Objekt die Dicke eines Kolliders überwinden kann, ist der Kollider zu dünn oder das Objekt zu schnell. Dickere Collider können da Abhilfe schaffen.
Genauso kannst und solltest du beim Rigidbody die Collision Detection auf auf "Continuous" oder "Continuous Dynamic" schalten. Um schnelle Bewegungen noch besser zu erfassen.
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...