Unity 2D Kollision mit if-Anweisung abfragen?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Hi!

Wenn Du selbst prüfen willst, ob eine Kollision vor liegt und dafür nicht die Event-Methoden von Unity nutzen willst (sprich OnCollisionEnter2D etc), dann kannst Du einen Raycast machen: https://docs.unity3d.com/ScriptReference/Physics2D.Raycast.html

Du bekommst dort nicht direkt ein bool, sondern ein Objekt mit der Info, ob was getroffen wurde oder nicht. Das Beispiel siehst Du ja im Link.

Alternativ kannst Du natürlich Dein Bool auch selbst setzen. Auf true in OnCollisionEnter2D und auf false in OnCollisionExit2D.

Das kommt eben drauf an, was genau Du vor hast. :)

Woher ich das weiß:Berufserfahrung – Indie Game Entwickler & Content Creator auf YouTube

Kaktus258 
Beitragsersteller
 03.05.2021, 11:15

Ok, danke! Hättest du vielleicht noch eine Idee wie ich verhindern kann dass zwei kollidierende Objekte kurz ineinander übergehen und dann zurückprallen? Ich habe schon versucht ein Material hinzuzufügen und die verschiedenen Werte geändert, aber das ändert nichts...

Kaktus258 
Beitragsersteller
 03.05.2021, 11:22
@BoundfoxStudios

Ja genau. Geht das? Weil dass sich zwei kollidierende Objekte überlappen kann doch nicht gewollt sein...

BoundfoxStudios  03.05.2021, 11:30
@Kaktus258

Oh, das kann durchaus passieren. Ist ja nur Mathematik im Hintergrund.

Erster Anhaltspunkt:

Bei den Rigidbodies, die kollidieren, die Collision Detection Method auf "Continuous Dynamic" umstellen, dann wird's etwas genauer.

Wenn's immer noch nicht reicht, kannst Du an den Physik und Berechnungseinstellungen herumspielen. Die findest Du unter Edit -> Project Settings.

Dort dann einmal bei Time den FixedTimestep: Je kleiner die Zahl, desto mehr Physikiterationen werden berechnet. Per Standard läuft die Physik mit 50 Frames. Du kannst hier auch mal 75 oder 100 ausprobieren. Je mehr, umso genauer wird die Physik.

Alternativ im gleichen Menü, nur unter Physics 2D, sind weitere Einstellungen. Hier kannst Du bspw. mal bei Position Iterations oder Velocity Iterations schauen und die Werte langsam erhöhen.

Kaktus258 
Beitragsersteller
 03.05.2021, 11:42
@BoundfoxStudios

Danke, jetzt ist es besser, auch wenn es noch ein bisschen zuckt, aber das passt...