Jump to content
Unity Insider Forum

Meldung:"...kinematic bodies with CCD enabled are not supported!..."


KaBau

Recommended Posts

Nach dem Update auf die Version 2018.3 erscheint nun folgende Fehlermeldung:
"[Physics.PhysX] RigidBody::setRigidBodyFlag: kinematic bodies with CCD enabled are not supported! CCD will be ignored."
Normalerweise hilft ein Doppelklick auf die Fehlermeldung und man gelangt zum Ursprung des Fehlers, hier leider nicht.

Hier habe ich zwar etwas zu CCD gefunden, kann aber nichts damit anfangen: https://docs.unity3d.com/2018.3/Documentation/Manual/ContinuousCollisionDetection.html .

Meine Fragen:
- was ist CCD, also Continuous collision detection, bzw. was macht es?
- was muss ich in meinen Spiel abändern, damit diese Fehlermeldung nicht mehr erscheint?

Edit:
die Antwort zur zeiten Frage habe ich gefunden: bei meinem Game Objekt mit dem Rigidbody mit der Eigenschaft "is Kinematic" musste ich unter "Collision Detection" von "Continuous" auf "Continous Speculative" wechseln. Nun erscheint die Fehlermeldung nicht mehr. Bleibt als Abänderung meiner erste Frage:
- wo genau ist der Unterschied den verschiedenen "Collision Detection"?
Ich hatte damals das Problem, das mein Player zu schnell war und deshalb Collisionen nicht erkannt wurden. Somit flog mein Player durch andere Gegenstände / Game Objekte hindurch. Durch das Einstellen auf "Cobtinuous" konnte ich das vermeiden. Aber was machen die verschiedenen Einstellungen anders? Es hängt doch sicher mit der Performance zusammen, dass als Standarteinstellung nicht die höchste Stufe voreingestellt ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt verschiedene Arten von Collisionen.

Wenn du zum Beispiel mit Trigger arbeitest, wird die Physic Engine ignoriert und nur eine Collision registriert. Wichtig ist dann im Code, dass du dann beispielsweise nicht OnCollisionEnter2D beispielsweise, sondern OnCollsionTrigger2D machst.

IsKinematic unterbindet Einwirkungen durch die Physik engine, so dass Objekte dann nur noch über die Methoden und Transform Komponenten bewegt werden können. Es werden in den Berechnungen aber trotzdem Berechnungen in der Physic Engine berücksichtigt. IsKinematic kann auch Trigger auslösen.

Coninous brauchst du beispielsweise, wenn sich  dein Objekt schnell bewegt. Ich hatte das selbst schon, dass wenn sich Objekte zu schnell bewegen, Collider ignoriert werden. Damit kannst du Abhilfe schaffen. ContinousDynamic musst du nutzen, wenn sich mehrere Objekte schnell bewegen. Das musst du dann auch auf jedem Objekt, dass sich schnell bewegt, einstellen.

 

Ergo wird bei Continous und ContinousDynamic mehr überprüft, daher braucht es auch mehr Rechenleistung.

 

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Edit: Joa, mal wieder zu langsam, aber dafür etwas mehr in-depth :)

Kollisionsdetektion bestimmt, wie genau der Rigidbody schaut, ob er mit etwas kollidiert ist. Letztenendes geht die Physik-Engine ja nur bei jedem FixedUpdate zu allen Rigidbodys und bewegt sie einmal entlang ihrer aktuellen velocity. Das ist auch der Wert, der von AddForce und Gravitation beeinflusst wird.

Vorher ist der Rigidbody hier, danach ist er da. Wenn er "da" dann in einem Collider hängt, wird das als Kollision gewertet und der Rigidbody reagiert entsprechend. Ist der Rigidbody allerdings vorher nicht in einem anderen Collider und hinterher auch nicht, dann gibt es keine Kollision, selbst wenn zwischen "hier" und "da" eine Wand ist. Das ist die Ausgangslage, wenn man den Kollidions-Detektions-Modus auf "Discrete" stehen lässt. Kostet dafür aber auch schön wenig Performance.

Stellt man den Wert jetzt nach oben, werden zusätzliche Maßnahmen eingeschaltet, in solchen Fällen doch noch zu kollidieren. "Continuous" macht dabei einen SweepTest und bemerkt statische Collider "im Vorbeiflug". "Continuous Dynamic" bemerkt sogar andere, sich bewegende Rigidbodys. "Continuous Speculative" ist ähnlich wie "Continous Dynamic", aber performanter und eben mit kinematischen Rigidbodys kompatibel.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 month later...

Hi.

Ich habe auch Unity aktualisiert und den selben Fehler. Die im englischen Unity Forum angebotenen Lösungen bin ich durchgegangen. Es hilft nix. Der Fehler existiert, obwohl die Collider richtig eingestellt sind. Scheinbar hilft nur warten, oder wieder downgraden.

Vielleicht habe ich auch was übersehen.

Hier noch der Link zum Problem/Fehler: Fehler

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Fehler wird halt jetzt immer kommen, wenn man auf Kinematic Objekte CCD anwendet. Den Fehler beseitigt man in dem man entweder statt CCD, CCS nimmt bei Kinematic Objekten, wie der Threadersteller schon geschrieben hat, oder per Script zwischen Discrete und CCD wechselt, je nach kinematic Zustand.

Mit Unity 2018.3 wurde ja "endlich" mal die Physik auf PhysX 3.4 Version updatet. Trotzdem noch weit davon entfernt, perfekt zu sein. Zum Beispiel bei Kollision Berechnung, wenn ein Objekt genau zwischen zwei anderen Kollidern trifft, wird die Kollision dann irgendwie nur mit einem der beiden Kollidern berechnet. 😂

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb TheOnlyOne:

Der Fehler wird halt jetzt immer kommen, wenn man auf Kinematic Objekte CCD anwendet. Den Fehler beseitigt man in dem man entweder statt CCD, CCS nimmt bei Kinematic Objekten, wie der Threadersteller schon geschrieben hat, oder per Script zwischen Discrete und CCD wechselt, je nach kinematic Zustand.

Mit Unity 2018.3 wurde ja "endlich" mal die Physik auf PhysX 3.4 Version updatet. Trotzdem noch weit davon entfernt, perfekt zu sein. Zum Beispiel bei Kollision Berechnung, wenn ein Objekt genau zwischen zwei anderen Kollidern trifft, wird die Kollision dann irgendwie nur mit einem der beiden Kollidern berechnet. 😂

Bei mir kommt der Fehler trotzdem, obwohl ich es nach neuen Richtlinien eingestellt habe. Naja, wer weiß.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...