(Gelöst)Unity: Wie kann ich ein Prefab zerstören, wenn ich es auf eine Wand schieße?

1 Antwort

Daher lohnt es sich, erstmal die Grundlagen einer Entwicklungsumgebung und einer Programmiersprache zu lernen, bevor man sich an so große Projekte wie ein Computerspiel wagt.

Der Grund für deine Probleme kann an einer Vielzahl von Ursachen liegen. Wie bei deiner anderen Frage ist auch die Überprüfung auf Kollision etwas, was man in Update() und nicht in FixedUpdate() machen sollte. Überleg doch mal, was passiert, wenn ein Objekt mit hoher Geschwindigkeit mit einem andern Objekt kollidiert, aber bereits wieder weg ist, bevor FixedUpdate() überhaupt gerufen wird. Schau dir mal den Unterschied zwischen Update() und FixedUpdate an, beispielsweise hier. FixedUpdate() benutzt du, wenn du verlässliche Zeitintervalle benötigst, Update() wenn etwas so früh wie möglich herausgefunden werden soll, wenn es passiert, wie zum Beispiel eine Benutzereingabe.

Das Tutorial, dem du da folgst, ist von 2016. Das ist zwar nicht zwangsläufig veraltet, aber dennoch alt. Um mit Kollisionen zu arbeiten, gibt es in Unity bereits einfache und effiziente Wege, das musst du nicht nochmal neu codieren, wie du das in dem geposteten Code machst.

Arbeite dich beispielsweise mal damit ein: OnCollisionEnter2D

Siehst du dort die Methode OnCollisionEnter2D? Da zerstörst du dann das GameObject, denn die Methode wird gerufen, wenn deine Kugel mit einem anderen Objekt kollidiert. Dafür benötigen die Objekte Collider, da hat meine ich Unity auch ein Tutorial zur Verfügung gestellt.

Ich habe jetzt mit 2D argumentiert, da das Tutorial, das du gezeigt hast, auch 2D ist. 3D wären dann andere Methoden, aber vom Aufbau und Benutzen her identisch.

Was möchtest Du wissen?