Menu
CoddyTech

OverlapSphere und SphereCast

Teil des Abschnitts Physik und Gameplay der Unity-Journey von Coddy. Lektion 38 von 63.

Ein Ray fragt eine Linie ab. Physics.OverlapSphere(center, radius) fragt einen kugelförmigen Bereich ab: Die Methode gibt ein Array aller Collider zurück, die eine Kugel um center berühren, ohne Richtung und ohne Entfernung. Diese Bombe zerstört bei der Explosion jede Kiste innerhalb von 3 Einheiten:

void Explode()
{
    Collider[] hits = Physics.OverlapSphere(transform.position, 3f);
    foreach (Collider c in hits)
    {
        if (c.CompareTag("Crate"))
        {
            Destroy(c.gameObject);
        }
    }
    Destroy(gameObject);
}

Das Array enthält alles in Reichweite: den Boden, die Wände und den eigenen Collider der Bombe, da Überlappungstests den Collider nicht überspringen, in dem sie starten. Deshalb prüft die Schleife das Tag, bevor sie etwas unternimmt. Das attachedRigidbody jedes Colliders ist das Rigidbody, zu dem er gehört, oder null bei statischen Objekten wie dem Boden.

Physics.SphereCast(origin, radius, direction, out hit, maxDistance) ist ein dicker Ray: Er bewegt eine Kugel entlang der Linie und meldet den ersten Collider, mit dem die Kugel zusammenstoßen würde. Ein Felsbrocken mit Radius 1, der auf eine 1.5 breite Lücke zwischen zwei Pfosten zurollt, fragt damit ab, ob er hindurchpasst: Ein dünner Ray durch die Mitte der Lücke trifft nichts, während der Sphere Cast einen Pfosten trifft. Wie ein Ray überspringt ein Sphere Cast Collider, die er an seinem Startpunkt bereits berührt.

challenge icon

Aufgabe

Mittel

Rüste die Kanone mit einem breiten Strahl aus. Das Skript Beam befindet sich auf der Kanone, und im Inspector erhält es einen radius von 0.5 und eine range von 12. Mit den linken und rechten Pfeiltasten drehst du die Kanone.

  • Wenn die Leertaste gedrückt wird, fege eine Kugel mit dem radius von der Kanone aus nach vorne, mit einer Länge von range Einheiten.
  • Wenn sie etwas trifft, gib Hit Pole zusammen mit dem Namen des getroffenen Objekts aus und zerstöre dieses Objekt.
  • Wenn sie nichts trifft, gib Miss aus.

Der dünne Pfahl steht etwas seitlich von der Mittellinie der Kanone. Drücke Play und feuere, dann Check.

Probier es selbst

using UnityEngine;

public class Beam : MonoBehaviour
{
    public float radius = 0.5f;
    public float range = 12f;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // Bewege eine Kugel mit dem Radius radius nach vorn: Zerstöre das erste Objekt, das sie trifft.
        }
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Physik und Gameplay