Gibt es eine Methode, um festzustellen, ob ein Sprite die Kamera der Bühne verlassen hat? oder muss ich meine Operationen machen? : P.
8
Die Camera-Klasse enthält ein Frustum-Objekt mit der öffentlichen Methode pointInFrustum (Vector3-Punkt), das true zurückgibt, wenn sich Ihr Sprite im Frustum der Kamera befindet. Sie können auch im Benutzer-Wiki nach anderen Culling-Techniken suchen. http://code.google.com/p/libgdx-users/wiki/Culling
Wenn Sie ein 2D-Spiel mit Kacheln erstellen, können Sie ganz einfach Ihr eigenes Keulen implementieren, was viel billiger ist, da Sie nur genau das durchlaufen, was Sie in Ihrem Kachelarray benötigen.
Dinge, die Sie wissen sollten:
Jetzt können wir berechnen, wie viele Kacheln gezeichnet werden sollen.
viewport.width / tileWidth
viewport.height / tileHeight
Die Mathematik hängt davon ab, wie alles eingerichtet ist, ist aber sehr einfach. Zum Beispiel macht es einen Unterschied, ob die Mitte des Bildschirms der Kamerastandort oben links oder unten links ist.
Sie sollten am Ende so etwas haben:
Dies hat gegenüber der Überprüfung, ob sich ein Punkt in Ihrem Kegelstumpf befindet, den Vorteil, dass Sie bei letzterem über jeden Punkt iterieren müssen, anstatt ein einfaches Array zu verwenden, bei dem Sie immer über eine festgelegte Anzahl von Kacheln iterieren, die der Anzahl der horizontalen Kacheln entspricht * vertikale Kacheln, die tatsächlich gezeichnet werden müssen. Auf diese Weise können Sie riesige Karten haben und trotzdem eine gute Bildrate haben. Leider wird dies bei der Verwendung von 3D schwieriger und schwieriger, aber mit der Freiheit, die der Benutzer mit der Kamera erhält, wird es exponentiell schwieriger. Sie können sich vorstellen, dass eine Kamera mit fester Perspektive, die sich mit dem Charakter bewegt, nur ein paar fest codierte Variablen benötigt, um dieselben Tricks auf einer Reihe von Maschen auszuführen, die Ihre Karte darstellen.
quelle
Verwenden Sie einfach die Begrenzungskugelprüfung (Sie können den Radius mit Pythagoras berechnen). Es ist höllisch schnell und funktioniert auch mit Rotation. Es ist nicht perfekt, verursacht aber niemals falsches Keulen.
Für die Ad-hoc-optimierte Version hat Intersector einige Rechteck-Rectanle-Methoden, die auch funktionieren können. Aber Sie müssen das Rechteck für den Kamerastumpf selbst berechnen.
quelle
Diese Funktion prüft, ob ein Akteur sichtbar ist (funktioniert nur für 2D). Funktioniert in allen Situationen, z. B. wenn sich der Schauspieler in einer Gruppe befindet.
quelle