Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen OnCollisionEnter und OnTriggerEnter | Unity Physics
Unity für Anfänger
course content

Kursinhalt

Unity für Anfänger

Unity für Anfänger

1. Einführung in Unity
2. Schreiben Sie Ihr Erstes Skript
3. Unity Physics
4. Unity UI und Sounds
5. Polishing and Exporting Your Game

book
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?

Welche Eigenschaft von Collidern muss auf true gesetzt werden, um die Triggererkennung zu aktivieren, wenn `OnTriggerEnter2D` verwendet wird?

Welche Eigenschaft von Collidern muss auf true gesetzt werden, um die Triggererkennung zu aktivieren, wenn OnTriggerEnter2D verwendet wird?

Wählen Sie die richtige Antwort aus

Welche Methode sollte verwendet werden, um die Kollisionserkennung zwischen zwei Collidern zu handhaben, die keine Trigger sind?

Welche Methode sollte verwendet werden, um die Kollisionserkennung zwischen zwei Collidern zu handhaben, die keine Trigger sind?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt