Zum Platzieren tippen

Tap to Place ist ein Solver, der verwendet wird, um ein Spielobjekt auf der Oberfläche de Szenenrekonstruktions-Gittermodells (SR) der Umgebung um den Benutzer herum zu platzieren. Tap to Place verwendet eine Kombination aus zwei Auswahlvorgängen und einer Kopfbewegung, um ein Objekt zu platzieren. Sie können die Platzierung mit einer einzelnen Auswahl beginnen, Kopfbewegungen verwenden, um die Position des Objekts zu steuern, und das Objekt mit einer weiteren Auswahlaktion in der Szene platzieren.

Verwendung

  1. Einrichten der Szene

    • Erstellen einer neuen Unity-Szene
    • Fügen Sie der Szene einen Würfel hinzu, ändern Sie die Skala in 0,2, und ändern Sie die Position in (0, 0, 0,7).
  2. Fügen Sie Zum Platzieren tippen einem Spielobjekt mit einem Collider an.

    • Wenn die Komponente „Zum Platzieren tippen“ hinzugefügt wird, wird ebenfalls ein Solver-Handler angefügt. Tap to Place wird von der Solver-Klasse abgeleitet, die einen Solver-Handler erfordert. Die Position eines „Zum Platzieren tippen“-Objekts wird relativ zum TrackedTargetType innerhalb des Solver-Handlers berechnet. Standardmäßig ist der Kopf der TrackedTargetType, d. h., wenn sich der Kopf bewegt, folgt ihm das Objekt, wenn es ausgewählt ist. Der TrackedTargetType kann auch auf „Controller Ray“ (Controllerstrahl) festgelegt werden, bei dem das Objekt dem Controller folgt. Die erste Gruppe von Eigenschaften im „Zum Platzieren tippen“-Inspektor sind die Allgemeinen Solvereigenschaften (Common Solver Properties).

    Wichtig

    Tap to Place ist ein eigenständiger Solver, der nicht mit anderen Solvern verkettet werden kann. Er kann nicht verkettet werden, weil SolverHandler.UpdateSolvers verwendet wird, um die Position des Objekts während des Platzierens zu aktualisieren.

    • „Zum Platzieren tippen“-Eigenschaften:
      • Auto Start: Wenn „true“, beginnt der „Zum Platzieren tippen“-Solver damit, die Position des zu platzierenden Spielobjekts zu steuern. Das Objekt beginnt sofort, dem „TrackedTargetType“ (Kopf oder Controllerstrahl) zu folgen. Dieser Wert muss geändert werden, bevor Start() aufgerufen wird, um einen Effekt zu haben.
      • Default Placement Distance: Die Standardentfernung (in Metern), in der ein Objekt relativ zum TrackedTargetType im SolverHandler platziert wird. Wenn der Raycast nicht auf die Oberfläche trifft, wird das Spielobjekt am Standardplatzierungsabstand platziert.
      • Max Raycast Distance: Die maximale Entfernung (Meter) für den Raycast, basierend auf dem Ursprung von „TrackedTargetType“. Dieser Raycast sucht nach einer Oberfläche, um ein ausgewähltes Objekt zu platzieren.
      • UseDefaultSurfaceNormalOffset: Diese Eigenschaft ist standardmäßig auf Wahr festgelegt. Sie stellt sicher, dass das Objekt, das platziert wird, an einer Oberfläche ausgerichtet ist. Wenn diese Eigenschaft „true“ ist, wird anstelle eines für die Eigenschaft SurfaceNormalOffset angegebenen Werts der Standardoffset der Oberflächennormale angewendet. „false“ gibt an, dass der Wert für SurfaceNormalOffset angewendet wird. Der Standardoffset der Oberflächennormale ist die Ausdehnung des Colliders entlang der Z-Achse.
      • Surface Normal Offset: Die Entfernung zwischen der Mitte des zu platzierenden Spielobjekts und einer Oberfläche entlang der Oberflächennormale, wenn der Raycast auf eine Oberfläche trifft. Diese Eigenschaft wird nur auf ein Objekt angewendet, wenn UseDefaultSurfaceNormalOffset „false“ ist.
      • Keep Orientation Vertical: „true“ gibt an, dass das zu platzierende Spielobjekt aufrecht und an „Vector3.up“ ausgerichtet bleibt.
      • Rotate According to Surface: Bei „false“ ändert das zu platzierende Spielobjekt seine Drehung nicht entsprechend dem Oberflächentreffer. Das Objekt bleibt der Kamera zugewandt, solange „IsBeingPlaced“ auf „true“ festgelegt ist.
      • Magnetic Surfaces: Ein Array von LayerMasks, die von höchster zu niedrigster Priorität hin ausgeführt werden sollen. Die erste Ebenenmaske zum Bereitstellen eines Raycasttreffers wird für Positionsberechnungen verwendet.
      • Debug Enabled: Bei „true“ und im Unity-Editor wird die Normale des Raycasttreffers gelb gezeichnet. Das Aktivieren des Debuggens ist nützlich, wenn RotateAccordingToSurface auf „true“ festgelegt ist, weil es die Normale des Oberflächentreffers zeichnet, die visuell erklärt, warum das Objekt an seiner aktuellen Ausrichtung platziert wird.
      • On Placing Started: Dieses Ereignis wird einmalig ausgelöst, wenn das zu platzierende Spielobjekt ausgewählt wird.
      • On Placing Stopped: Dieses Ereignis wird einmalig ausgelöst, wenn das zu platzierende Spielobjekt nicht ausgewählt platziert wird.
  3. Testen des „Zum Platzieren tippen“-Verhaltens im Editor

    • Drücken Sie „Wiedergabe“, und halten Sie die Leertaste gedrückt, um eine Eingabesimulationshand anzuzeigen.
    • Bewegen Sie die Hand, bis sich der Würfel im Fokus befindet, und simulieren Sie einen Klick mit der Eingabesimulationshand, indem Sie mit der linken Maustaste klicken.
      • Wenn keine Collider in der Szene vorhanden sind, folgt das Objekt dem TrackedTargetType in der definierten Default Placement Distance.
    • Das Objekt folgt der Bewegung des TrackedTargetType nach der Auswahl. Zum Simulieren einer Kopfbewegung drücken Sie im Editor die Tasten W, A, S, D. Die Kopfdrehung ändern Sie, indem Sie mit der rechten Maustaste klicken und diese gedrückt halten.
    • Um die Platzierung des Objekts zu beenden, klicken Sie erneut. Das Objekt muss sich für den Klick zum Beenden der Platzierung nicht im Fokus befinden. Der Fokus ist nur für den ersten Klick erforderlich, der den Platzierungsprozess startet.