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. De forma predeterminada, el administrador de restricciones recopilará automáticamente todos los componentes de restricción asociados al objeto del 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

Selección automática

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 los 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 restricción de un proyecto deben estar visibles aquí. Consulte Restricciones de transformación para obtener más información.

Ir al componente

Todas las restricciones que se encuentran 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

Selección manual

Si el administrador de restricciones está establecido en modo manual, solo se procesan y aplican a la transformación las restricciones vinculadas en la lista de restricciones. La lista mostrada solo mostrará las restricciones seleccionadas por el usuario, así como los botones o 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 que muestra 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 restricciones 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 varias 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 cerca, lejos o ambos tipos de manipulación. 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

Usuario de face de restricción

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:

Cara lejos

El objeto se aleja del usuario si es true.

FixedDistanceConstraint

Restricciones Distancias fijas

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

Rotación fija

Esta restricción corrige la rotación relativa entre el usuario y el objeto manipulado mientras se está manipulando. Esto es ú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

Rotación fija al mundo

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

MaintainApparentSizeConstraint

Mantener el tamaño aparente

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

Eje de movimiento de restricciones

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á la relación relativa a los ejes de transformación local del objeto manipulado si es true. El valor predeterminado es false.

RotationAxisConstraint

Eje de rotación de restricciones

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 verticalmente, pero seguir permitiendo rotaciones de ejes 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.