Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Spielerinteraktion mit Objekten | Spielerverhalten
Kampfspiel in Unity
course content

Kursinhalt

Kampfspiel in Unity

Kampfspiel in Unity

1. Unity-Animationssystem
2. Spielerverhalten
3. Feindverhalten
4. Spiel Verbessern
5. Verbessere das Flappy Bird Spiel

book
Spielerinteraktion mit Objekten

Schnittstellen

Eine Schnittstelle ist wie ein Vertrag, der eine Reihe von Methoden und Eigenschaften definiert, die eine Klasse implementieren muss. Sie ermöglicht es, festzulegen, über welche Funktionalitäten eine Klasse verfügen soll, ohne die Implementierungsdetails bereitzustellen.

Beispiel

Angenommen, Sie entwickeln ein Spiel in Unity und möchten verschiedene Waffentypen wie Schwerter, Gewehre und Bögen erstellen. Sie könnten eine Schnittstelle namens IWeapon definieren, die die grundlegenden Aktionen beschreibt, die jede Waffe ausführen können sollte, wie zum Beispiel Attack() und Reload().

Nun muss jede Klasse, die im Spiel als Waffe gelten soll, diese Schnittstelle implementieren. Beispielsweise könnten Sie eine Klasse Sword oder eine Klasse Gun haben.

Durch die Verwendung von Schnittstellen kann sichergestellt werden, dass alle Waffen über die gleiche Grundfunktionalität verfügen (Attack() und Reload()), wobei jede Waffe ihre eigene spezifische Implementierung haben kann. Dies macht den Code modularer und leichter zu verwalten, insbesondere wenn die Komplexität des Spiels zunimmt.

Dies ist die Schnittstelle, die in unserem Spiel verwendet wurde, um Gegner als Objekte zu kennzeichnen, die angegriffen werden können.

public interface IGetAttacked
{
    public void GetAttacked(int damage);
}

TryGetComponent

if (rayCastHit.transform.TryGetComponent(out IGetAttacked getAttacked))
{
    getAttacked.GetAttacked(damage);
    attackEffect.transform.position = rayCastHit.point;
    attackEffect.Play();
    isAttacking = false;
}

Wichtige Punkte

  • raycastHit: Bezieht sich auf das Ergebnis eines Raycast-Treffers. Beim Ausführen eines Raycasts in Unity erhält man Informationen darüber, welches Objekt getroffen wurde;
  • .TryGetComponent(out IGetAttacked getAttacked): Diese Methode versucht, eine bestimmte Komponente vom Transform des GameObject abzurufen. Das Schlüsselwort out weist die abgerufene Komponente der Variablen getAttacked zu, falls erfolgreich. Andernfalls wird alles unterhalb dieser if-Anweisung ignoriert;
  • IGetAttacked: Dies ist der Schnittstellentyp, den der Code vom GameObject abzurufen versucht. Es gibt an, dass das GameObject eine Komponente besitzen muss, die das Interface IGetAttacked implementiert.

Wenn das vom Raycast getroffene GameObject eine Komponente besitzt, die das Interface IGetAttacked implementiert, hält die Variable getAttacked nach Ausführung dieser Zeile eine Referenz auf diese Komponente. Andernfalls wird getAttacked auf null gesetzt.

question mark

Was ist der Zweck der Methode TryGetComponent in Unity?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

course content

Kursinhalt

Kampfspiel in Unity

Kampfspiel in Unity

1. Unity-Animationssystem
2. Spielerverhalten
3. Feindverhalten
4. Spiel Verbessern
5. Verbessere das Flappy Bird Spiel

book
Spielerinteraktion mit Objekten

Schnittstellen

Eine Schnittstelle ist wie ein Vertrag, der eine Reihe von Methoden und Eigenschaften definiert, die eine Klasse implementieren muss. Sie ermöglicht es, festzulegen, über welche Funktionalitäten eine Klasse verfügen soll, ohne die Implementierungsdetails bereitzustellen.

Beispiel

Angenommen, Sie entwickeln ein Spiel in Unity und möchten verschiedene Waffentypen wie Schwerter, Gewehre und Bögen erstellen. Sie könnten eine Schnittstelle namens IWeapon definieren, die die grundlegenden Aktionen beschreibt, die jede Waffe ausführen können sollte, wie zum Beispiel Attack() und Reload().

Nun muss jede Klasse, die im Spiel als Waffe gelten soll, diese Schnittstelle implementieren. Beispielsweise könnten Sie eine Klasse Sword oder eine Klasse Gun haben.

Durch die Verwendung von Schnittstellen kann sichergestellt werden, dass alle Waffen über die gleiche Grundfunktionalität verfügen (Attack() und Reload()), wobei jede Waffe ihre eigene spezifische Implementierung haben kann. Dies macht den Code modularer und leichter zu verwalten, insbesondere wenn die Komplexität des Spiels zunimmt.

Dies ist die Schnittstelle, die in unserem Spiel verwendet wurde, um Gegner als Objekte zu kennzeichnen, die angegriffen werden können.

public interface IGetAttacked
{
    public void GetAttacked(int damage);
}

TryGetComponent

if (rayCastHit.transform.TryGetComponent(out IGetAttacked getAttacked))
{
    getAttacked.GetAttacked(damage);
    attackEffect.transform.position = rayCastHit.point;
    attackEffect.Play();
    isAttacking = false;
}

Wichtige Punkte

  • raycastHit: Bezieht sich auf das Ergebnis eines Raycast-Treffers. Beim Ausführen eines Raycasts in Unity erhält man Informationen darüber, welches Objekt getroffen wurde;
  • .TryGetComponent(out IGetAttacked getAttacked): Diese Methode versucht, eine bestimmte Komponente vom Transform des GameObject abzurufen. Das Schlüsselwort out weist die abgerufene Komponente der Variablen getAttacked zu, falls erfolgreich. Andernfalls wird alles unterhalb dieser if-Anweisung ignoriert;
  • IGetAttacked: Dies ist der Schnittstellentyp, den der Code vom GameObject abzurufen versucht. Es gibt an, dass das GameObject eine Komponente besitzen muss, die das Interface IGetAttacked implementiert.

Wenn das vom Raycast getroffene GameObject eine Komponente besitzt, die das Interface IGetAttacked implementiert, hält die Variable getAttacked nach Ausführung dieser Zeile eine Referenz auf diese Komponente. Andernfalls wird getAttacked auf null gesetzt.

question mark

Was ist der Zweck der Methode TryGetComponent in Unity?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 5
some-alt