Zunächst einmal besitze ich Unity Pro.
Ich habe versucht, Lichter zu verschließen, wenn sie eine Weile nicht mehr angezeigt werden, um die Leistung zu verbessern. Die Hauptmethoden, auf die ich gestoßen bin, waren die Verwendung von BecameVisible () und das Testen des Kamerastumpfs.
Mein Hauptproblem war, dass ich immer noch möchte, dass das Licht eingeschaltet ist, wenn der Player einen Bereich betrachtet, der vom Licht beleuchtet wird.
Derzeit verwende ich eine Methode, mit der überprüft wird, ob sich der beleuchtete Bereich im Kegelstumpf befindet. Das Problem ist jedoch, dass sich manchmal Lichter im Kegelstumpf befinden, ohne dass der Spieler sie tatsächlich sehen kann (z. B. eine Wand zwischen ihnen und dem Spieler). Ich habe Raycasting für sie versucht, aber Sie können nie detailliert genug für den tatsächlich beleuchteten Bereich werden (das Beste, was ich herausfinden konnte, war die Verwendung von renderer.bounds.extent und renderer.bounds.center, um die maximal beleuchteten Punkte aus dem Licht zu berechnen).
Kennt jemand eine einfache Möglichkeit in Unity Pro, Lichter zu verschließen? Oder können Sie mir einen guten Weg nennen, um diese Kamera-Drehpunktmethode zu verwenden, über die ich gesprochen habe?
quelle
Antworten:
Sie können Ihr eigenes Skript schreiben, um Lichter zu verschließen. So etwas ist an der Hauptkamera angebracht:
Sie können auch überprüfen, ob der Punkt innerhalb eines Winkels auf der Y-Achse der Kamera liegt (die anderen Achsen verursachen nur Schmerzen). Seien Sie ein bisschen großzügig mit dem Winkel, vielleicht dem Zweifachen des Frustrums der Kamera, damit die Lichter nicht ausgeschaltet werden, wenn sie Bereiche in der Sicht der Kamera beleuchten. Wenn Sie diese zusätzliche Optimierung hinzufügen (die wahrscheinlich nicht erforderlich ist), stellen Sie sicher, dass Sie den Abstand als Breitphase verwenden, da dies viel kostengünstiger ist.
quelle