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
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
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
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
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
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
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
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
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
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
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.