Wie kann ich Objekte in Unity 2D nicht durchgehbar machen?

2 Antworten

Der Grundweg ist korrekt.

Die Objekte brauchen Collider. Was du brauchst ist eine Kollisionsabfrage. Am besten arbeitet man da mit den Tags. Du vergleich dann bei der Kollision um welches Tag das Objekt hat. Ich kann dir nicht mehr die genaue Syntax sagen, aber so. musst du vorgehen.

Je nach dem wie die Objekte dann reagieren sollen, wäre ein RigidBody auch eine Überlegung Wert. Aber das ist Anwendungsbezogen.

Woher ich das weiß:eigene Erfahrung

Die beiden Objekte, die gegeneinander stoßen sollen, benötigen jeweils einen Collider und eines von beiden sollte mit einem RigidBody ausgestattet sein.

OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider. (...) Notes: Collision events are only sent if one of the colliders also has a non-kinematic rigidbody attached.

Quelle

Bei beiden Collidern sollte der Haken für Is Trigger deaktiviert sein.

Is Trigger - If enabled, this Collider is used for triggering events, and is ignored by the physics engine.

Quelle

In der Unity Dokumentation findest du je Collider einen eigenen Artikel (schau bspw. in die letztgenannte Quelle). Dort werden gegebenenfalls auch konkretere Informationen bezüglich des Verhaltens genannt (z.B. können konvexe Mesh Collider auch miteinander kollidieren, u.ä.).

Noch mehr Informationen über Collider (Einteilung von Collider-Typen und wie sie sich bei gegenseitiger Kollision verhalten) kannst du hier nachlesen.

Beachte zudem, dass schnell bewegliche Objekte unter Umständen einfach durch den Collider durchschlüpfen können, ohne eine Kollision zu erzeugen. In dem Fall solltest du für das sich bewegende Objekt den Modus für die Kollisionserkennung ändern (siehe hier).