Jump to content
Unity Insider Forum
Sign in to follow this  
TheOnlyOne

Mesh mit Convex als Trigger

Recommended Posts

Hallo,

ich habe ein Flusskurve Mesh und möchte, dass wo ein Objekt, welches in die Flusskurve runterfällt, Wasserspritzer an der Kollisionsstelle mit Wasser auflöst und hindurch fällt.

Ich versuche das mit Collision umzusetzen und aus Collision  einen Trigger machen. Trigger lässt sich aber ja nur mit convex Aktivierung machen. Und hier fangen meine Probleme an:

Convex verformt Collider ja konvexmäßig und die Kurve sieht so aus:
 

pic2.thumb.png.258ae39b1a83de8bcbb288222933f60e.png

Um jetzt den Trigger ideal nach Meshform anzupassen, muss ich den Mesh aufteilen, damit es konfex wird. Wenn ich 2 teile erstelle siehts immer noch so aus:

pic3.png.8f8c01aae8fa599928aa1c2e590a324f.png

Muss also 5 mal so ein kleines Stück Mesh aufteilen, nur damit convex vernünftig aussieht. Das Ganze ist schon ziemlich aufwendig, aber dann muss ich ja noch auf jedes Objekttrigger noch einen Script draufhängen, also 5 Stück insgesamt, damit Spritzer aufgelöst werden, an der Collisionsstelle.

Entweder mache ich hier was falsch, oder Unity hat hier einen komischen Weg gewählt, dass Trigger nur mit convex funktionieren. Das ist nicht nur aufwändig, sondern kostet auch viel Performance, angenommen habe ich 10 solche Kurven in der Szene, dann muss ich 50 Collision Scripte draufhängen, damit Spritzer funktionieren?!

Wie würdet ihr dieses Problem angehen? Gibt es welche Alternativen? Kann man mit Raycast irgendwie prüfen, wann Oberfläche eines Objekts mit anderer Oberfläche kollidiert, ohne ganze convex Dinge?

 

Share this post


Link to post
Share on other sites

5 BoxCollider (die ich statt 5 MeshCollidern nehmen würde) dürften immer noch wesentlich performanter sein als ein konkaver MeshCollider. Das ist wohl auch der Grund, warum es keine konkaven Trigger geben kann. Ist übrigens keine Entscheidung von Unity, sondern von PhysX, welches Unity als 3D-Physik-Engine benutzt.

Was die Scripts angeht... in einigen Fällen kannst du einfach alle Collider auf ein GameObject packen. In diesem Fall wird das nicht gehen, weil sich BoxCollider nicht relativ zu ihrem GameObject drehen lassen. Du kannst aber einen Rigidbody auf den Parent aller Collider packen und ihn auf kinematic stellen, damit er nicht durch die Gegend fliegt. Das GameObject mit dem Rigidbody kriegt dann ebenfalls alle OnTrigger-Events mit.

  • Like 1

Share this post


Link to post
Share on other sites
vor 52 Minuten schrieb Sascha:

5 BoxCollider (die ich statt 5 MeshCollidern nehmen würde) dürften immer noch wesentlich performanter sein als ein konkaver MeshCollider. Das ist wohl auch der Grund, warum es keine konkaven Trigger geben kann. Ist übrigens keine Entscheidung von Unity, sondern von PhysX, welches Unity als 3D-Physik-Engine benutzt.

Danke für deine Aufklärung. Ich kann ja nachvollziehen warum sie das gemacht haben, immerhin sollte ja Unity mit PhysX 3.3  doppelt so schnell sein

https://docs.unity3d.com/Manual/UpgradeGuide5-Physics.html

Aber trotzdem könnte man irgendwie leichter für Entwickler machen, als ganzes Mesh auf konfex zu schneiden. In meinem Fall muss ich auch noch UV anpassen für einzelen Teilchen :(

Zitat

in einigen Fällen kannst du einfach alle Collider auf ein GameObject packen

Gut zu wissen. Weil ich hatte mal früher gelesen,  dass man nur verschiedene Collider Typen auf einem Objekt haben kann.
https://answers.unity.com/questions/188775/having-more-than-one-collider-in-a-gameobject.html

Zitat

Du kannst aber einen Rigidbody auf den Parent aller Collider packen und ihn auf kinematic stellen, damit er nicht durch die Gegend fliegt. Das GameObject mit dem Rigidbody kriegt dann ebenfalls alle OnTrigger-Events mit.

Danke, das ist denke ich bessere Lösung als zig Teile mit Scripts zu versehen :)

Share this post


Link to post
Share on other sites
vor einer Stunde schrieb TheOnlyOne:

Weil ich hatte mal früher gelesen,  dass man nur verschiedene Collider Typen auf einem Objekt haben kann.

Das ist von 2011 und schon gaaanz lange nicht mehr aktuell :)

Bei Unity sind alle Ressourcen/Infos, die älter sind als 1-2 Jahre, eher erstmal mit Vorsicht zu genießen.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×