Administrador de restricciones: MRTK2

El administrador de restricciones permite aplicar un conjunto de componentes de restricción a una transformación. Los componentes de tipo TransformConstraint que se adjuntan al objeto de juego se pueden tener en cuenta. Por defecto, el administrador de restricciones recopilará automáticamente todos los componentes de restricción adjuntos al objeto de juego y los aplicará a las transformaciones procesadas. Sin embargo, los usuarios pueden optar por configurar manualmente la lista de restricciones aplicadas y permitir que solo se aplique un subconjunto de restricciones adjuntas.

Actualmente, los siguientes elementos de experiencia de usuario de MRTK admiten el administrador de restricciones:

Propiedades y campos del inspector

El administrador de restricciones se puede operar en dos modos:

  • Selección automática de restricciones
  • Selección manual de restricciones

Selección automática de restricciones

Auto Selection

El modo predeterminado del administrador de restricciones, la selección automática de restricciones, proporcionará una lista de todos los componentes de restricción adjuntos, así como botones y un botón agregar restricción.

Agregar restricción al objeto de juego

Este botón permite agregar un componente de restricción directamente desde el inspector del administrador de restricciones. Todos los tipos de restricciones de un proyecto deben estar visibles aquí. Consulte Restricciones de transformación para obtener más información.

Ir al componente

Todas las restricciones encontradas en el objeto se mostrarán aquí con un botón Ir al componente . Este botón hará que el inspector se desplace hasta el componente de restricción seleccionado para que se pueda configurar.

Selección manual de restricciones

Manual Selection

Si el administrador de restricciones se establece en modo manual, solo se procesan y aplican a la transformación las restricciones vinculadas en la lista de restricciones. La lista que se muestra solo mostrará las restricciones seleccionadas por el usuario, así como los botones o las opciones para quitar o agregar entradas. Al habilitar el modo manual por primera vez, el administrador de restricciones rellenará la lista todos los componentes disponibles como punto de partida para seleccionar los componentes de restricción adjunta.

Quitar entrada

Esto quita la entrada de la lista seleccionada manualmente. Ten en cuenta que esta opción no quitará el componente de restricción del objeto de juego. Los componentes de restricción siempre deben quitarse manualmente para asegurarse de que no se rompa accidentalmente ningún otro componente que haga referencia a este componente.

Agregar entrada

Agregar entrada abrirá una lista desplegable en la que se muestran todos los componentes de restricción disponibles que aún no están en la lista manual. Al hacer clic en cualquiera de las entradas que el componente se agregará a la selección de restricción manual.

Adición de una nueva restricción

Esta opción agregará un componente del tipo seleccionado al objeto de juego y agregará el componente de restricción recién creado a la lista de restricciones manual.

Restricciones de transformación

Las restricciones se pueden usar para limitar la manipulación de alguna manera. Por ejemplo, algunas aplicaciones pueden requerir rotación, pero también requieren que el objeto permanezca vertical. En este caso, se puede agregar un elemento RotationAxisConstraint al objeto, que se usará para limitar la rotación al giro del eje Y. MRTK proporciona una serie de restricciones, todas las cuales se describen a continuación.

También es posible definir nuevas restricciones y usarlas para crear un comportamiento de manipulación único que pueda ser necesario para algunas aplicaciones. Para ello, cree un script que herede de la clase TransformConstraint e implemente la propiedad abstracta ConstraintType y el método abstracto ApplyConstraint. Al agregar una nueva restricción al objeto, debe restringir la manipulación de la manera definida. Esta nueva restricción también debe mostrarse en la selección automática del administrador de restricciones o agregar la lista desplegable de entradas en modo manual.

Todas las restricciones que proporciona el MRTK comparten las siguientes propiedades:

Tipo de mano

Especifica si la restricción se usa para una mano, dos manos o ambos tipos de manipulación. Dado que esta propiedad es una marca, es posible seleccionar ambas opciones.

  • Una mano: la restricción se usará durante la manipulación de una mano si está seleccionada.
  • Dos manos: la restricción se usará durante la manipulación de dos manos si está seleccionada.

Tipo de proximidad

Especifica si la restricción se usa para los tipos de manipulación cercanos, lejanos o ambos. Dado que esta propiedad es una marca, es posible seleccionar ambas opciones.

  • Near: Si se selecciona esta opción, la restricción se usará durante la manipulación cercana.
  • Far: Si se selecciona esta opción, la restricción se usará durante la manipulación lejana.

FaceUserConstraint

Constraint Face User

Cuando esta restricción se adjunta a un objeto, la rotación se limitará para que el objeto siempre se enfrente al usuario. Esto es útil para pizarras o paneles. Las propiedades de FaceUserConstraint son las siguientes:

Lejos de la cara

El objeto se aleja del usuario si es true.

FixedDistanceConstraint

Constraint Fixed distances

Esta restricción corrige la distancia entre el objeto manipulado y otra transformación de objeto al iniciar la manipulación. Esto es útil para el comportamiento, como la fijación de la distancia desde el objeto manipulado a la transformación de cabeza. Las propiedades de FixedDistanceConstraint son las siguientes:

Transformación de restricciones

Esta es la otra transformación a la que el objeto manipulado tendrá una distancia fija. El valor predeterminado es la transformación de cámara.

FixedRotationToUserConstraint

Fixed Rotation

Esta restricción corrige la rotación relativa entre el usuario y el objeto manipulado mientras se está manipulando. Esto resulta útil para pizarras o paneles, ya que garantiza que el objeto manipulado siempre muestre la misma cara al usuario que hizo al principio de la manipulación. no FixedRotationToUserConstraint tiene ninguna propiedad única.

FixedRotationToWorldConstraint

Fixed rotation to the world

Esta restricción corrige la rotación global del objeto manipulado mientras se está manipulando. Esto puede ser útil en los casos en los que no se debe impartir ninguna rotación mediante manipulación. no FixedRotationToWorldConstraint tiene ninguna propiedad única:

MaintainApparentSizeConstraint

Maintain Apparent size

Cuando esta restricción se adjunta a un objeto, independientemente de la distancia que tenga el objeto del usuario, mantendrá el mismo tamaño aparente para el usuario (es decir, tomará la misma proporción del campo de vista del usuario). Esto se puede usar para asegurarse de que una pizarra o un panel de texto permanece legible durante la manipulación. no MaintainApparentSizeConstraint tiene ninguna propiedad única:

MoveAxisConstraint

Constraint Move Axis

Esta restricción se puede usar para corregir a lo largo del cual se puede mover un objeto manipulado. Esto puede ser útil para manipular objetos sobre la superficie de un plano o a lo largo de una línea. Las propiedades de MoveAxisConstraint son las siguientes:

Restricción en el movimiento

Especifica los ejes en los que se va a evitar el movimiento. De forma predeterminada, estos ejes serán globales en lugar de locales, pero esto se puede cambiar a continuación. Dado que esta propiedad es una marca, se puede seleccionar cualquier número de opciones.

  • Eje X: el movimiento a lo largo del eje X está restringido si está seleccionado.
  • Eje Y: el movimiento a lo largo del eje Y está restringido si está seleccionado.
  • Eje Z: el movimiento a lo largo del eje Z está restringido si está seleccionado.

Uso del espacio local para la restricción

Restringirá el valor relativo a los ejes de transformación local del objeto manipulado si es true. El valor predeterminado es false.

RotationAxisConstraint

Constraint Rotation Axis

Esta restricción se puede usar para corregir los ejes que puede girar un objeto manipulado. Esto puede ser útil para mantener un objeto manipulado en posición vertical, pero seguir permitiendo rotaciones del eje Y, por ejemplo. Las propiedades de RotationAxisConstraint son las siguientes:

Restricción en la rotación

Especifica los ejes que se van a evitar la rotación. De forma predeterminada, estos ejes serán globales en lugar de locales, pero esto se puede cambiar a continuación. Dado que esta propiedad es una marca, se puede seleccionar cualquier número de opciones.

  • Eje Y: la rotación sobre el eje Y está restringida si está seleccionada.
  • Eje Z: la rotación sobre el eje Z está restringida si está seleccionada.
  • Eje X: la rotación sobre el eje X está restringida si está seleccionada.

Uso del espacio local para la restricción

Restringirá la relación relativa a los ejes de transformación local del objeto manipulado si es true. El valor predeterminado es false.

MinMaxScaleConstraint

Min Max Constatint

Esta restricción permite establecer valores mínimos y máximos para la escala del objeto manipulado. Esto es útil para impedir que los usuarios ecalen un objeto demasiado pequeño o demasiado grande. Las propiedades de MinMaxScaleConstraint son las siguientes:

Escalado mínimo

Valor de escala mínimo durante la manipulación.

Escalado máximo

Valor de escala máximo durante la manipulación.

Relativo al estado inicial

Si es true, los valores anteriores se interpretarán como relativos a la escala inicial de los objetos. De lo contrario, se interpretarán como valores de escala absolutos.