Freigeben über


Konfigurieren für Avatarbewegung und Teleportation

Überblick

Damit sich Mesh-Avatare in Ihrer Erfahrung erfolgreich bewegen und teleportieren können, ist es wichtig, bestimmte Entwurfsrichtlinien zu befolgen. Dieser Artikel enthält Informationen zum Einrichten von Oberflächen für Bewegung und Teleportation, Tipps zu Avatar-Bewegungslimits und Colliderdesign sowie einen ausführlichen Abschnitt zu Ebenen.

Anleitung zur Avatarbewegung

Eine Szene sollte Colliders haben, damit der Avatar laufen und teleportieren kann. Im Allgemeinen führt ein geringer Poly Mesh Collider, der eng an die visuelle Geometrie passt, zu den besten Ergebnissen. Box Colliders funktionieren hervorragend für triviale Szenarien, können aber zu einigen Problemen führen, z. B. dazu, dass der Avatar an den Ecken hängen bleibt oder die Stufenhöhenbegrenzungen besiegt.

Mesh-Avatar-Bewegungslimits:

Maximal begehbare Steigung: <45 Grad
Maximale Schritthöhe: 0,3
Avatarkapselradius: 0,3
Avatarkapselhöhe: 2
Avatarhöhe: 1,8

Vorschläge für beste Ergebnisse:

  • Richten Sie die Kollisionsflächen mit den visuellen Oberflächen aus, auf denen der Avatar ausgeführt wird. Dies ist wichtig, um Probleme mit der Position des Avatars relativ zur visuellen Oberfläche zu vermeiden (um Schwebe- oder Abschneidung zu verhindern).

  • Abgerundete Ecken helfen, die Bewegung des Avatars zu glätten und zu verhindern, dass der Avatar hängen bleibt.

  • Um die Avatarbewegung zu blockieren, verwenden Sie steile Hänge oder eine Höhe, die viel größer als die maximale Schritthöhe ist.

    • Ändern Sie die Form Ihrer Collider, um Oberflächen zu erstellen, die für den Avatar von Natur aus schwierig oder unmöglich sind. Verwenden Sie für instance einen Mesh Collider mit einer unregelmäßigen Form, die keine flache Oberfläche oder begehbare Steigung für den Avatar bietet, auf dem der Avatar stehen kann.

    • In einigen Fällen kann ein Capsule Collider oder eine ähnliche abgerundete Form auf Objekten oder Bereichen, auf denen der Avatar nicht gehen sollte, ausreichen. Diese Formen sind nicht begehbar, wenn die Steigung steil genug ist und der Avatar abrutschen lässt.

Kollisionsebenen

Interagierbare Objekte sind GameObjects mit einem Nicht-Trigger-Collider und der entsprechenden visuellen Geometrie auf einer der kollidierenden Objektebenen. Avatare auf Objekten mit Nicht-Trigger-Collidern gehen und positioniert werden können, achten Sie daher darauf, welche Ebene verwendet wird.

Um eine genaue Avatarpositionierung und Teleportierung zu erhalten, müssen sich Szenenkolidder auf den entsprechenden Ebenen befinden. Der Avatar des lokalen Benutzers interagiert mit allen Collidern auf den Ebenen, die diese Interaktionen unterstützen.

Wenn der Avatar positioniert oder teleportiert wird, ist es wichtig, dass der Avatar mit einem "Ground"-Objekt kollidiert und konsistent in derselben Höhe über dem Boden platziert wird (dies wird als "Erdung" bezeichnet). Wenn kein Boden erkannt wird, fällt der Avatar. Dies ist akzeptabel, wenn oberirdisch (es gibt keinen fallenden Schaden!), aber wenn der Avatar unterhalb des "Bodenobjekts" platziert wird, kann der Avatar eine Kollision mit diesem Objekt nicht registrieren, was dazu führt, dass es aus der Umgebung fällt und respawn. Wenn der Avatar während der Neupositionierung in den Boden eindringt, wird er geerdet.

Alle Avatare in einer Sitzung sollten eine einheitliche Höhe aufweisen. Die Avatarposition wird angepasst, wenn sich die Höhe außerhalb des Bereichs ändert. Beispiel:

  • Ein VR-Benutzer geht physisch zu und von einer sitzenden oder stehenden Position aus. Die HMD-Bewegung bewirkt, dass der Avatar in der Szene den Boden durchdringt oder viel höher vertikal steht als andere Avatare.

  • Ein schlecht konfiguriertes visuelles Skript teleportiert den Avatar in eine Position, die nicht passt oder vertikal zu niedrig ist.

Ein weiterer Grund dafür ist, dass beim Aktualisieren der Avatarphysik, wenn der Avatar nicht geerdet ist, er in Position springt, weil seine Kapsel mit dem Boden kollidiert und den Avatar in die neue Position stürzt. Dies ist besonders für HMD-Benutzer von Bedeutung, da unnatürliche Bewegungen wie diese Übelkeit auslösen können.

Ebenen, mit denen der Avatar interagiert, und kann auf folgenden Ebenen ausgeführt werden:

0 – Standard
2 : Raycast ignorieren
4 - Wasser (nur Trigger-Collider zulässig, nicht begehbar)
14 – GroundCollision (teleportierbar)
18 - TriggerVolume (nur Trigger-Collider zulässig, nicht begehbar)
21 – IgnoreObjects
26 – Custom26
27 – Custom27
28 – Custom28
29 – IgnoreRealtimeLight
30 – WallCollision

Erfahren Sie mehr über Ebenen in einem Mesh-Projekt.

Unterstützen der Teleportation

Damit eine Szene die Teleportation unterstützt, müssen teleportierbare Oberflächen (z. B. der Boden oder der Boden) auf der GroundCollision-Schicht Über Collider verfügen. Es gibt andere begehbare Ebenen, aber nur GroundCollision ist teleportierbar. Die visuelle Geometrie kann nicht teleportiert werden und sollte sich nicht auf der GroundCollision-Ebene befinden. nur Colliders können sich auf dieser Ebene befinden. Eine unsachgemäße oder inkonsistente Schichtung und Kollision kann unerwünschte Auswirkungen beim Teleportieren oder Auffinden des Bodens haben.

Eine teleportierbare Oberfläche muss die folgenden Bedingungen erfüllen:

  • Es muss ein Typ von Nicht-Trigger-Collider angefügt sein (z. B. ein Mesh Collider oder Box Collider).
  • Die Ebene muss auf GroundCollision festgelegt werden.

Seien Sie vorsichtig mit niedrigen Decken oder Tunneln; diese könnten sich möglicherweise auf die Avatarerdierung und Teleportation auswirken. Beispielsweise kann sich die Avatarphysik oder der Teleportbogen überschneiden oder mit dem Collider über ihnen interagieren. Die Höhe vom Boden bis zum Dach für einen befahrbaren Bereich sollte mehr als die 2m Avatarkapselhöhe sein. Es muss ein kleiner Puffer platz über dem Kopf des Avatars vorhanden sein, besonders wenn das Dach schräg statt flach ist.

Die Lokomotionsphysik sorgt für eine reibungslose Avatarbewegung mit allen teilnehmern interagierbaren Collidern und verhindert das Eindringen von Bereichen, die für Avatarkollisionen zu klein sind. Eine Kollision mit nicht autorisiertem Boden oder problematische Umgebungsgeometrie wie Keilformen oder sehr enge Räume können jedoch dazu führen, dass der Avatar oder die Kamera Objekte durchdringt oder hängen bleibt. Es ist wichtig, dass Sie alle begehbaren und teleportierbaren Oberflächen gründlich testen.

Ebenen im Detail

Objektebenen

Wenn ein GameObject über einen Nicht-Trigger-Collider verfügt, wird es mit anderen Objekten kollidieren, wenn es sich auf einer der Objektebenen befindet.

0 – Standard
2 : Raycast ignorieren
4 - Wasser (nur Trigger-Collider zulässig)
14 – GroundCollision
18 - TriggerVolume (nur Trigger-Collider zulässig)
20 : ObjectCollision
26 – Custom26
27 – Custom27
28 – Custom28
29 – IgnoreRealtimeLight
30 – WallCollision
31 – IgnoreParticipant

Die Standardebene in Unity heißt (nicht überraschend) "Standard", sodass Sie möglicherweise eine andere Ebene verwenden müssen, wenn Sie nicht mit anderen Objekten interagieren möchten. Beispielsweise wird IgnoreParticipant für Objekte verwendet, die nicht mit dem Avatar interagieren sollen, und IgnoreCollisions wird für Objekte verwendet, die mit nichts interagieren sollten.

Einige wichtige Ebenen

Standard

Wenn nicht anders angegeben, befindet sich ein Collider auf der Standardebene . Dies ist eine begehbare Ebene, und der Avatar wird ordnungsgemäß geerdet. Es ist kein gültiges Teleportziel für den lokalen Benutzer. Diese Ebene interagiert und kollidiert mit anderen Objekten.

GroundCollision

Nur Collider auf der GroundCollision-Ebene sind gültige Teleportziele für den lokalen Benutzer. Andernfalls ist sie mit der Standardebene identisch.

Visuelle Geometrie, die nicht mit Kollision unterstützt wird, ist nicht begehbar und blockiert den Avatar nicht, sodass es sich um ein falsches Teleportziel handelt und sich nicht auf der GroundCollision-Ebene befinden sollte.

WallCollision

Die WallCollision-Schicht wird verwendet, um Wände anzugeben, die der Avatar nicht durchdringen sollte, um den Avatar innerhalb eines spielbaren Raums einzuschränken. VR-Benutzer können ihre Avatare mit HMD-Bewegung während der raumskaligen Fortbewegung auf beliebige Weise bewegen und physisch durch eine virtuelle Wand gehen. Der Avatar wird zurück an die Grenzen des Spielbereichs teleportiert, nachdem er eine festgelegte Entfernung zurückgelegt hat. Diese Ebene ist ansonsten mit der Standardebene identisch.

Ebenendefinitionen

Im Folgenden ist eine Liste der Ebenen aufgeführt, die durch ID und Name definiert sind, einschließlich blockierenden Semantik und Beschreibung:

  1. Standard

    [Avatar/Objekt/Raycast-Blockierung]

    Wird für Kollisionen und Beleuchtung verwendet. Ein Avatar kann darauf laufen, aber nicht teleportieren. Standard für die meisten Requisiten. Objekte auf der Standardebene erhalten richtungsgerichtetes Echtzeitlicht von der Umgebung.

  2. TransparentFX

    [Nicht blockieren]

    Spezielle Behandlung in der Renderingpipeline von Unity für transparente Objekte und Spezialeffekte; stellt eine korrekte Renderingreihenfolge für Transparenz sicher.

  3. IgnoreRaycast

    [Avatar-/Objektblockierung]

    Kollisionsfähige Ebene, die keine Raycasts blockiert, z. B. nicht interaktive Objekte oder unsichtbare Wände, die Avatare nicht passieren können, aber Physikobjekte können durchgehen (z. B. Geländer, die Objekte übergeworfen werden können, aber Avatare nicht übersprungen werden können).

  4. Water

    [Nicht blockieren]

    Speziell für Wasseroberflächen. Kann für spezielle Rendering- und Physikinteraktionen mit Wasser verwendet werden. Verwenden Sie nicht mit Nicht-Trigger-Collidern.

  5. GroundCollision

    [Avatar/Objekt/Raycast-Blockierung]

    Wird für begehbare Kollisionsflächen verwendet, auf die teleportiert werden kann. Hinweis: In früheren Versionen des Mesh Toolkits war dies die "NavMesh"-Ebene.

  6. IgnoreCollisions

    [Nicht blockieren]

    Interagiert mit nichts. Kann die Umgebung und andere Objekte durchschneiden.

  7. TriggerVolume

    [Nicht blockieren]

    Ebene für Objekte, die nicht von Physik oder Raycasts betroffen sein sollten und andernfalls keine besondere Verwendung haben. Verwenden Sie nicht für Objekte mit Nicht-Trigger-Collidern.

  8. ObjectCollision

    [Objektblockierung]

    Ebene, die mit Objekten, aber nicht mit dem Avatar oder Raycast kollidieren soll.

  9. IgnoreObjects

    [Avatar/Raycast-Blockierung]

    Ebene, die mit Avataren, aber nicht mit Objekten kollidieren soll.

  10. RaycastOnly

    [Raycast-Blockierung]

    Ebene für Objekte, die Raycasts blockieren oder ausgewählt werden können, aber keine Auswirkungen auf Avatar- oder Objektkollision haben.

  11. Custom26

    [Avatar/Objekt/Raycast-Blockierung]

    Benutzerdefinierte Ebene.

  12. Custom27

    [Avatar/Objekt/Raycast-Blockierung]

    Benutzerdefinierte Ebene.

  13. Custom28

    [Avatar/Objekt/Raycast-Blockierung]

    Benutzerdefinierte Ebene.

  14. IgnoreRealtimeLight

    [Avatar/Objekt/Raycast-Blockierung]

    Geben Sie an, welche Kunstobjekte in der Umgebung kein direktionales Echtzeitlicht empfangen, z. B. die meisten statischen Objekte (verwenden Sie stattdessen mit der Lightmap eine hintergrundgebackene Beleuchtung).

  15. WallCollision

    [Avatar/Objekt/Raycast-Blockierung]

    Kollision, die das Durchschneiden einer Szene verhindert. Wenn ein HMD-Benutzer seinen Kopf durch die Wand klebt, wird er an einen nahegelegenen Ort im spielbaren Bereich weitergeleitet.

  16. IgnoreParticipant

    [Objekt-/Raycast-Blockierung]

    Objekte, die Raycasts und andere Objekte blockieren, aber keine Avatare.

Ebeneninteraktionen und Tabellen

Ebeneninteraktionen

Screenshot der Ebenenkollisionsmatrix.

Ebenentabelle

Eine Erklärung der vier Farbcodes in der folgenden Tabelle Ebenen.

Eine Tabelle mit den Attributen aller verfügbaren Ebenen.