Wie kann ich Objekte in Unity 2D nicht durchgehbar machen?
Hallo,
ich versuche gerade mein erstes eigenes und ziemlich simples Spiel zu machen. Ich möchte, dass mein Spieler und die Wand kollidieren können, sie sollen also nicht durcheinander gehen können. Ich hab vorher schon viel im Internet gesucht, hab aber nichts wirklich gefunden, was aktuell wäre, oder funktioniert hätte. Ich habe es mit Box Collidern 2D und Rigidbodies 2D probiert, es hat aber nicht funktioniert. Habt ihr eine Idee, wie ich das machen könnte?
Danke im Vorraus.
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.
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.
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.
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).
Ich hab nicht wirklich viel Erfahrung mit Unity, also wie könnte so eine Kollisionsabfrage aussehen?