Was sind die Vorteile einer Wand als Flugzeug oder als Kiste? Sollte ich ein Flugzeug mit einem Box-Collider anstelle eines Mesh-Colliders verwenden?
Was sind die Vorteile einer Wand als Flugzeug oder als Kiste? Sollte ich ein Flugzeug mit einem Box-Collider anstelle eines Mesh-Colliders verwenden?
Antworten:
Es wird ein paar verschiedene Dinge geben, die Sie berücksichtigen müssen.
Beachten Sie, dass die Vorteile der unten beschriebenen Optimierungen nur bei einer Tonne Wänden von Bedeutung sind. An diesem Punkt ist es möglicherweise ratsam, eine andere Lösung in Betracht zu ziehen, beispielsweise die Partitionierung des binären Raums (BSP), um Ihre Wände in Ihrem Spiel zu gestalten. Dies würde Ihre Levels für das Rendern (wenn richtig entworfen) und für die Physik hochoptimieren (da Sie eine sehr gute Definition haben, was kollidiert und was nicht.
Für das Rendern einer Box ist mehr erforderlich als für das Rendern einer Ebene. Es hat mehr Vertices und Dreiecke, was bedeutet, dass Ihr Vertex-Shader und der Rasterizer mehr Daten verarbeiten müssen. Verwenden Sie daher eine Box nur, wenn Sie dies in Bezug auf die Sichtbarkeit benötigen. Entfernen Sie Gesichter nach Bedarf, damit der Spieler sie sehen kann.
Sie sollten immer ein BoxCollider
anstelle eines verwenden, MeshCollider
wenn Sie können. MeshCollider
s müssen Kollisionen pro Fläche (oder als konvexe Hülle) des Netzes anwenden und Raycasting und Physik verlangsamen (dies ist jedoch eine vernachlässigbare Menge für nur eine Box). Eine andere Sache mit BoxColliders
ist, dass es für den Spieler viel schwieriger ist, sie zu überwinden, wenn sie wirklich schnell sind. Auch bei andauernden Kollisionen können Sie, wenn Sie feststellen, dass die Dinge immer noch durch Wände verlaufen, dieBoxColliders
Wenn Sie viel schneller mit Flugzeugen arbeiten MeshColliders
(weil Sie nicht alle BoxColliders
an ihre Abmessungen anpassen müssen), ist es möglicherweise in Ordnung, nur diese zu verwenden, wenn Sie die gewünschte Leistung erzielen.
Ein bisschen erweitern auf "Coburn" Punkte :
Rendern : Wenn Sie die Wand nur als Ebene rendern, ist die Wand nur von einer Seite sichtbar, da die Ebene (oder genauer gesagt ihre Flächen) nur eine gerenderte Seite hat. Wenn sich der Spieler also um die Wand bewegen kann, müssten Sie mehrere Ebenen auf allen Seiten abdecken, was bedeutet, dass Sie ohnehin eine Kiste haben.
Physik : Einfache Geometriekollider (Kugeln, Kästchen usw.) sind im Vergleich zu Vollmaschenkollidern immer schneller zu berechnen, da nicht alle Flächen des Netzes einzeln überprüft werden müssen. Stattdessen können "einfache" Raycasts oder Abstandsberechnungen (z. B. Abstand zum Kugelmittelpunkt minus Kugelgröße) verwendet werden.
Für andere Physik-Engines, die einen separaten "Flugzeug-Kollider" haben (der von Unity nicht unterstützt wird), gibt es keinen "besseren". Ein Flugzeug kann etwas schneller sein, aber es kann passieren, dass Sie auf schnelle Objekte stoßen, die es passieren, ohne tatsächlich zu kollidieren. Dann haben Sie entweder dickere Kollisionen (also Box statt Ebene) oder wechseln zur kontinuierlichen Kollisionserkennung (Continuous Collission Detection, CCD), wie hier erläutert .
Noch etwas zum Rendern: Wenn Sie eine eigene Implementierung für die Schattenzuordnung verwenden, können Wände aus Kästchen Wänden aus Ebenen überlegen sein, da bei Ebenen möglicherweise ein Peter-Panning auftritt.
Hier ist eine Erklärung des Symptoms:
http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/#peter-panning
Mir wurde immer gesagt, dass es am besten ist, wenn Sie Schatten haben, diese fest zu machen, um bei leichten Blutungen zu helfen, da der Unterschied in der Tiefe zu gering ist und es bluten wird.
Ich könnte mich irren, aber ich mache alle meine Wände und solche Sachen doppelseitig, eine Wand wird nur ein paar Vert sein, also sollte es nicht so viel Ersparnis bedeuten, wenn man ein Flugzeug dabei hat.
Es gibt einige Dinge, von denen ich Seiten lasse, aber es ist meistens die Unterseite oder Oberseite von Sachen, die viele Sachen um sich haben, um bei leichten Blutungen zu helfen.
Ich mache dasselbe für die Physik, dachte nicht wirklich darüber nach, aber für mich schien es richtig, eine Wand als Wand und ein Flugzeug als Flugzeug zu benutzen, aber das bin nur ich