Hallo! In diesem Artikel möchte ich Ihnen zeigen, wie Sie die Zerstörung von Feinden durch einen Sprung wie in Mario realisieren können. Ich lerne noch selbst. Wenn ich nützliche Tipps oder Hinweise habe, schreibe bitte in die Kommentare. Nun, nach zahlreichen Ansichten von Tutorials und gelesenen Artikeln wurden nur zwei interessante gefunden und wahrscheinlich der einfachste Weg, die Optionen zu implementieren:
- Der erste ist der Kontakt der Kolliderpunkte.
- Der zweite ist der Kontakt der Kollider. Wenn zwei Kollider an das Objekt gehängt werden, nimmt einer dem Spieler das Leben und der zweite zerstört das Objekt, an dem er befestigt ist.
Zunächst schreiben wir eine Funktion, die dem Spieler das Leben kostet und für beide Optionen erforderlich ist:
public int health = 3; void Hurt() { health--; if (health <= 0) SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); }
1 Option
Wir werden die erste Option analysieren, wenn der Kontaktpunkt größer oder gleich einer Höhe von 0,6 ist, der Spieler von oben springt und der Feind zerstört wird, andernfalls erleidet der Spieler Schaden.
void OnCollisionEnter2D(Collision2D collision) { Enemy enemy = collision.collider.GetComponent<Enemy>(); if (enemy != null) { foreach (ContactPoint2D point in collision.contacts) { if (point.normal.y >= 0.6f) { enemy.EnemyHurt(); } else { Hurt(); } } }
(Ein Fragment des Codes, das am Player hängt)
public void EnemyHurt() { Destroy(this.gameObject); }
(Ein Codeausschnitt, der am Feind hängt)
2 Option
Fügen Sie einen Collider hinzu, machen Sie ihn etwas höher als den Hauptcollider, setzen Sie ein Häkchen "is Trigger" auf das Objekt, legen Sie das Skript auf und fügen Sie dieses Codefragment hinzu.
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.name == "Player") Destroy(this.gameObject); }
(Ein Codeausschnitt, der am Feind hängt)
Wenn der Collider ein Objekt namens "Player" berührt, wird das Objekt zerstört (als Kontaktmarke können Sie ein Tag verwenden).
Weiter im selben Objekt erstellen wir ein weiteres gameObject und nennen es DeathZone. Fügen Sie einen Collider hinzu, vergrößern Sie ihn etwas und aktivieren Sie das Kontrollkästchen "is Trigger".

private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.name == "DeathZone") { Hurt(); } }
(Ein Fragment des Codes, das am Player hängt)
Wie Sie sehen können, war im Gegensatz zur ersten Option bei der zweiten Option die Verwendung von Collidern etwas größer, und es war nicht erforderlich, Trigger zu verwenden.

(Zweite Option)
Sie können auch hinzufügen, dass der Spieler nach der Zerstörung des Feindes springt. Nun, alles scheint zu sein, ich danke Ihnen allen für Ihre Aufmerksamkeit!