Wie wird die Kollisionserkennung und -bewegung in der Regel in einem FPS gehandhabt, insbesondere bei geringfügigen Änderungen der Bodenhöhe wie Treppen (sowohl bei Steigung als auch bei Gefälle)?
Wie wird die Kollisionserkennung und -bewegung in der Regel in einem FPS gehandhabt, insbesondere bei geringfügigen Änderungen der Bodenhöhe wie Treppen (sowohl bei Steigung als auch bei Gefälle)?
Antworten:
Entitäten, die typischerweise durch eine Kapsel (Zylinder mit Kugeln an den Enden) gegen die Weltgeometrie (oder ein vereinfachtes Kollisionsnetz) für eine weltweite Kollision dargestellt werden.
Treppen kollidieren normalerweise entweder nicht mit einer unsichtbaren Rampe oder unterhalb einer bestimmten Höhe wird normalerweise als Nebeneffekt der Kollisionsauflösung angehoben. (Sie erhalten eine gegenseitige Durchdringung mit der Bewegung als Teil der Schrittgröße, und die Auflösung wird sie als nächstgelegene Ebene nach oben herausspringen lassen.)
Ich denke, so funktioniert Unreal 3, aber ich könnte mich irren. Ich erinnere mich, dass ich in Source eine Bounding-Box-Hierarchie gesehen habe, aber ich kann mich nicht erinnern, ob das nur für den Kampf war. Unabhängig davon sind Kapseln einfach und schnell
In Unity 3D ist es am einfachsten, den First-Person-Controller zu haben. Normalerweise muss das Zeichen nach oben springen, wenn die Schritthöhe höher als der Schrittversatz ist. Eine andere Möglichkeit besteht darin, einen Box-Collider hinzuzufügen und zu drehen, damit der Charakter die Treppe leicht überfliegen kann, als wäre es eine Rampe.
Bradys Antwort ist gut, aber wenn Sie einen hackigen Weg suchen, können Sie einfach einen Strahl auf Ihre Bodenkollisionsgeometrie werfen, herausfinden, auf welches Dreieck es trifft, und dann einen gewichteten Durchschnitt der Höhe der Verts des Dreiecks verwenden um die Bodenhöhe herauszufinden.