Jump to content
Unity Insider Forum

Unterschied Collider Collision ?


Recommended Posts

Hallo, habe leider im Forum nichts zum Vergleich gefunden.

Ich benutze zwar OnCollisionEnter und OnTriggerEnter , aber nur weil ich es in Beispielen gesehen habe. Kann ich irgendwo im Vergleich nachlesen wann welche Methode sinnvoll ist ?

Danke

Link to post
Share on other sites

Pass uff! :)

Beide Dinge haben Gemeinsamkeiten aber Unterschiede.
Ein Collider ist ein fester Körper, den ein anderer Körper nicht durchdringt. Er berührt also nur seine Oberfläche.
Ein Trigger ist etwas in dem ein anderer Körper hinein gehen kann. Er hat natürlich auch eine geiwisse Form und einen Rand.

Beim OnColliderEnter und beim OnTriggerEnter wird die Berührung des Randes ausgewertet. Und bei OnXxxExit wird das nicht-mehr-berühren ausgewertet.
Das ist die Gemeinsamkeit!

Der Unterschied ist jetzt aber ganz deutlich beim OnColliderStay und OnTriggerStay zu sehen. Da ein Körper in einen Trigger eintreten kann, wie z.B. in einen Raum bleibt "Stay" solange true, bis er den Raum wieder verlässt und der Raum kann riesig groß sein.
Bei einem Collider dringt ein anderer Körper ja nicht ein, er kann aber z.B. die ganze Zeit darauf stehen. Hier würde auch "Stay" die ganze Zeit true sein. Sobald er aber von dem Collider abprallt oder sich irgendwie anders entfernt. Ist es schon wieder vorbei.

Ein Collider ist also etwas festes, was nicht durchdrungen werden, aber berührt werden kann. Wie z.B. eine Gewehrkugel eine Wand. Wenn die Kugel die Wand triftt, soll sie sich z.B. zerstören. Das wertest du mit OnColliderEnter aus. Ene Bowlingkugel die ein Aufprallgeräusch und ein Rollgeräusch machen soll, würde bei Enter das Aufprallgeräusch machen. Solange die Kugel den Boden berührt würde das Rollgeräusch laufen (und vielleicht über die Rollgeschwindigkeit den Pitch des Sounds verändern) und sobald der Boden verlassen wurde, ist Stille angesagt.

EIn Trigger ist etwas Durchdringbares wie z.B. eine Lichtschranke, den man für einen Checkpoint braucht. Oder aber ein ganzer Bereich, in dem man Energie aufladen kann. Oder vielleicht der Bereich, der dem Spiel sagt, dass der Player jetzt unter Wasser ist. Oder aber eine Kugel um ein Monster herum, welches den Aggroradius des Monsters darstellt. Sobald der Player da rein kommt, wird das Monster auf den Player aufmerksam und greift ihn an.

Es gibt ganz viele Anwendungsmöglichkeiten.

Eins noch:
Das OnTriggerXXX und das OnColliderXXX Event funktionieren immer in beide Richtungen. In dem Moment wo das Kugelscript weiß, dass es die Wand berührt hat, weiß das Wandscript auch, dass da eine Kugel eingeschlagen hat, wenn es denn so ein Script hat und es das Event auch abfragt. :)

 

Link to post
Share on other sites

Danke malzbie, das war richtig super zum Collider von Dir. Das mit dem "Stay" kann man ja wunderbar verwenden.

Leider fehlt mir noch die konkrete Anwendung von OnCollision, bzw. der Unterschied zum Collider. Es ist klar, daß ich immer einen Collider zum Objekt einrichten muss, egal ob Player, Bullet  oder Enemy. Aber wann ist es sinnvoll Collision zu verwenden ? Ich denke, da wird doch auch nur eine "Berührung" ausgewertet, oder ?

Link to post
Share on other sites

Ein Collider ist eine Komponente, die einem Objekt eine physikalische Form gibt. Wenn ein Rigidbody durch die Gegend fliegt, checkt es anhand seiner eigenen Collider gegen die anderen Collider in der Szene, ob er irgendetwas berührt.

Collision ist eine Klasse, die für Kollisionen da ist - ein Collision-Objekt stellt genau ein Kollisions-Event dar. Da stehen dann Sachen drin wie welche Collider beteiligt sind, wie groß die relative Aufprallgschwindigkeit ist, wo die beteiligten Collider sich genau berühren usw.

OnCollisionEnter/Stay/Exit sind halt die Events, die passieren, wenn ein Rigidbody gegen einen anderen Collider knallt, und da gibt's diese Informationen. OnTriggerEnter/Stay/Exit dagegen sind die Events, wenn ein Rigidbody in einen Trigger-Collider eindringt. Da Trigger-Collider durchlässig sind, prallt da gar nichts ab, es gibt nur das Event. Weil die Objekte sich also beliebig überschneiden können, kriegst du bei den OnTrigger...-Events keine Collision, sondern eben nur den Collider, um den es geht. Die ganzen Daten in einem Collision-Objekt ergeben bei einem Trigger überhaupt keinen Sinn.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...