Pulsar para colocar: MRTK3

Tap to place es un solucionador que se usa para colocar un objeto de juego en la superficie de la malla de reconstrucción de escena (SR) del entorno alrededor del usuario. Tap to place usa una combinación de dos clics y el movimiento de la cabeza para situar un objeto. Puede iniciar la colocación con una sola selección, usar el movimiento de la cabeza para controlar la posición del objeto y colocar el objeto en la escena con otra acción de selección.

Cómo se usa

  1. Configure la escena.

    • Cree una nueva escena de Unity.
    • Agregue un cubo a la escena, cambie la escala a 0,2 y cambie la posición a (0, 0, 0,7).
  2. Asocie Tap to Place a un objeto de juego con un colisionador.

    • Cuando se agregue el componente Tap to Place, también se asociará un controlador del solucionador. Tap to Place se deriva de la clase Solver, que requiere un controlador del solucionador. La posición de un objeto Tap to Place se calcula en relación con TrackedTargetType dentro del controlador del solucionador. De manera predeterminada, Head es TrackedTargetType; es decir, cuando se mueve la cabeza, el objeto la sigue si está seleccionado. Además, TrackedTargetType se puede establecer en Controller Ray (Rayo de controlador), que hace que el objeto siga al controlador. El primer grupo de propiedades del inspector de Tap to Place es Common Solver Properties (Propiedades comunes del solucionador).

    Importante

    Tap to place es un solucionador independiente y no se puede encadenar con otros solucionadores. No se puede encadenar porque SolverHandler.UpdateSolvers se usa para actualizar la posición del objeto mientras se está situando.

    • Propiedades de Tap to Place:
      • Auto Start: Si está activada, el solucionador Tap to Place comenzará a controlar la posición del objeto de juego que se va a situar. El objeto comenzará de inmediato a seguir a TrackedTargetType (Head o Controller Ray). Este valor debe modificarse antes de que se invoque Start() para que surta cualquier efecto.
      • Default Placement Distance: La distancia predeterminada (en metros) a la que se situará frente a un objeto en relación con TrackedTargetType en SolverHandler. Si el raycast no alcanza la superficie, el objeto del juego se colocará a la distancia de colocación predeterminada.
      • Max Raycast Distance: Distancia máxima (en metros) para el raycast, según el origen de "TrackedTargetType". Este raycast busca una superficie donde situar un objeto seleccionado.
      • UseDefaultSurfaceNormalOffset: Esta propiedad está activada de forma predeterminada. Se asegura de que el objeto que se está situando esté alineado en una superficie. Si esta propiedad está activada, se aplicará el desplazamiento normal de la superficie predeterminado, en lugar de cualquier valor especificado para la propiedad SurfaceNormalOffset. Si está desactivada, se aplicará el valor de SurfaceNormalOffset. El desplazamiento normal de la superficie predeterminado son las extensiones del colisionador a lo largo del eje Z.
      • Surface Normal Offset: Distancia entre el centro del objeto de juego que se va a situar y una superficie a lo largo de la normal de la superficie, si el raycast alcanza una superficie. Esta propiedad solo se aplica a un objeto si la propiedad UseDefaultSurfaceNormalOffset está desactivada.
      • Keep Orientation Vertical: Si está activada, el objeto de juego que se va a situar permanecerá vertical y en línea con Vector3.up.
      • Rotate According to Surface: Si está desactivada, el objeto de juego que se va a situar no cambiará su rotación según el impacto en la superficie. El objeto estará orientado a la cámara mientras IsBeingPlaced sea verdadero.
      • Magnetic Surfaces: Matriz de LayerMasks para ejecutar desde la prioridad más alta a la más baja. La primera máscara de capas para proporcionar un impacto de raycast se usará para los cálculos de posición.
      • Debug Enabled: Si está activada y en el editor de Unity, la normal del impacto del raycast se dibujará en amarillo. La depuración habilitada resulta útil cuando RotateAccordingToSurface está activada, ya que dibuja la normal de la superficie alcanzada, lo que explica visualmente por qué el objeto se encuentra en su orientación actual.
      • On Placing Started: Este evento se desencadena una vez cuando se selecciona el objeto de juego que se va a situar.
      • On Placing Stopped: Este evento se desencadena una vez cuando se anula la selección del objeto de juego que se ha situado.
  3. Pruebe el comportamiento de Tap to Place en el editor.

    • Presione el botón de reproducción y mantenga presionada la barra espaciador para mostrar una mano de simulación de entrada.
    • Mueva la mano hasta que el cubo esté en el foco y simule un clic con la mano de simulación de entrada haciendo clic con el mouse izquierdo.
      • Si no hay colisionadores en la escena, el objeto seguirá a TrackedTargetType en el Default Placement Distance definido.
    • El objeto seguirá el movimiento de TrackedTargetType después de la selección. Para simular el movimiento de la cabeza en el editor, presione las teclas W, A, S, D. Para cambiar la rotación de la cabeza, haga clic y mantenga presionado el botón derecho del mouse.
    • Para detener la colocación del objeto, vuelva a hacer clic. No es necesario que el objeto esté en el foco para hacer clic para detener la colocación. El foco solo es necesario para el clic inicial que inicia el proceso de colocación.