Kursinhalt
Unity für Anfänger
Unity für Anfänger
OnCollisionEnter und OnTriggerEnter
OnCollisionEnter2D
Verwendung: Diese Methode wird aufgerufen, wenn ein 2D-Collider, der an das GameObject
angehängt ist, mit dem dieses Skript verbunden ist, mit einem anderen Collider in der Szene kollidiert und mindestens einer der Collider einen Rigidbody2D
angehängt hat.
Auslöser: Diese Methode wird hauptsächlich zur Behandlung physischer Kollisionen verwendet, bei denen Objekte tatsächlich "zusammenstoßen".
Beispielszenario: Stellen Sie sich vor, Sie haben ein Spiel mit einem Charakter, der springt und auf Plattformen landet. Wenn der Charakter auf einer Plattform landet, möchten Sie möglicherweise einen Landegeräuscheffekt abspielen, die Animation des Charakters ändern oder eine andere Aktion auslösen. Sie würden OnCollisionEnter2D
verwenden, um zu erkennen, wann der Collider des Charakters mit dem Collider der Plattform kollidiert.
OnTriggerEnter2D
Verwendung: Diese Methode wird aufgerufen, wenn ein 2D-Collider, der an das GameObject
angehängt ist, mit dem dieses Skript verbunden ist, sich mit einem anderen Collider in der Szene überschneidet und mindestens einer der Collider die Eigenschaft "Is Trigger" aktiviert hat.
Auslöser: Im Gegensatz zu OnCollisionEnter2D
geht es bei dieser Methode nicht um physische Kollisionen, sondern darum, zu erkennen, wann ein Objekt in den Raum eines anderen eintritt, ohne notwendigerweise ihre Bewegung zu stoppen. Denken Sie daran, wie man durch eine Tür geht, ohne sie physisch zu öffnen.
Beispielszenario: Angenommen, Sie haben ein Spiel, bei dem der Spieler Münzen sammelt. Wenn sich der Charakter des Spielers über eine Münze bewegt, möchten Sie den Punktestand des Spielers erhöhen und die Münze verschwinden lassen. Sie würden OnTriggerEnter2D
verwenden, um zu erkennen, wann sich der Collider des Spielers mit dem Collider der Münze überschneidet.
Was ist ein Tag?
Definition: Ein Tag ist ein String-Wert, den Sie einem GameObject
in Unity zuweisen können.
Zweck: Tags werden verwendet, um GameObjects
für verschiedene Zwecke zu kategorisieren und zu identifizieren, wie z.B. zur Unterscheidung zwischen spielergesteuerten Objekten, Feinden, Sammlerstücken, Hindernissen usw.
Häufige Verwendungen von Tags
Identifizierung von Spielobjekten: Tags werden häufig verwendet, um wichtige GameObjects
in Ihrer Szene zu identifizieren, wie z.B. die Spielerfigur, Feinde, Sammlerstücke, Ziele usw.
Kollisionsdetektion: Tags können verwendet werden, um den Typ der GameObjects
zu bestimmen, die an Kollisionen beteiligt sind. Zum Beispiel möchten Sie vielleicht überprüfen, ob der Spieler mit einem Feind oder einem Sammlerstück kollidiert ist.
Trigger-Erkennung: Ähnlich wie bei der Kollisionsdetektion können Sie Tags verwenden, um GameObjects
zu identifizieren, die Triggerzonen in Ihrer Szene betreten.
Beispiel
-
OnCollisionEnter2D
: Dies ist eine spezielle Methode in Unity, die automatisch aufgerufen wird, wenn das Objekt, an das dieses Skript angehängt ist, mit einem anderen Objekt kollidiert; -
Collision2D collision
: Dieser Teil der Methode gibt Ihnen Informationen über die Kollision, wie z.B. welche Objekte beteiligt waren; -
if (collision.collider.tag == "ground")
: Diese Zeile überprüft, ob das Objekt, mit dem wir kollidiert sind, ein Tag namens "ground" hat. Tags sind wie Etiketten, die Sie Objekten in Unity geben können, um sie leicht zu identifizieren; -
Debug.Log("you lost");
: Wenn das Objekt, das wir getroffen haben, als "ground" getaggt ist, wird diese Zeile "you lost" in der Unity-Konsole ausgeben. Es ist eine Möglichkeit, Feedback zu geben oder Ereignisse in Ihrem Spiel auszulösen.
-
OnTriggerEnter2D
: Dies ist eine spezielle Methode in Unity, die automatisch aufgerufen wird, wenn das Objekt, an das dieses Skript angehängt ist, eine Triggerzone eines anderen Objekts betritt. Stellen Sie sich das wie einen Sensor vor, der erkennt, wenn Sie durch eine Tür gehen; -
Collider2D collision
: Dieser Teil der Methode gibt Ihnen Informationen über das Objekt, das die Triggerzone betreten hat. Es ist wie eine Notiz, die Ihnen sagt, durch welches Objekt Sie gerade gegangen sind; -
if (collision.tag == "win")
: Diese Zeile überprüft, ob das Objekt, das wir betreten haben, ein Tag namens "win" hat. Tags sind wie Etiketten, die Sie Objekten in Unity geben können, um sie leicht zu identifizieren. Es ist wie das Überprüfen, ob das Objekt ein Namensschild mit der Aufschrift "win" hat; -
Debug.Log("you won");
: Wenn das Objekt, das wir betreten haben, als "win" markiert ist, wird diese Zeile "you won" in der Unity-Konsole ausgeben. Es ist eine Möglichkeit, Feedback zu geben oder Ereignisse in Ihrem Spiel auszulösen. Stellen Sie sich das wie eine Nachricht vor, die auftaucht, um Ihnen mitzuteilen, dass Sie etwas erreicht haben.
1. Welche Eigenschaft von Collidern muss auf true gesetzt werden, um die Triggererkennung zu aktivieren, wenn OnTriggerEnter2D
verwendet wird?
2. Welche Methode sollte verwendet werden, um die Kollisionserkennung zwischen zwei Collidern zu handhaben, die keine Trigger sind?
Danke für Ihr Feedback!