Agarrar, mantener y producir con interactables
Información general
Mesh Interactables es un sistema para configurar objetos con scripts de Unity que definen la interacción con un comportamiento de objeto o avatar en tiempo de ejecución. Los scripts definen las propiedades del objeto con las que se puede interactuar mediante los interactores XRI. El kit de herramientas de Mesh contiene scripts de diferentes tipos de objetos que se pueden definir. Cuando se ejecuta un proyecto, configura todos los objetos prefabricados y valores necesarios para que los objetos o el avatar se comporten según se define. Si quiere ver una vista previa aproximada de lo que tendrán los objetos interactivos y se sentirán como cuando se ejecuten en la aplicación Mesh, asegúrese de configurar el modo de reproducción con emulación de malla. Tenga en cuenta que la funcionalidad de IK que se ve en la aplicación Mesh no está disponible en modo de reproducción con emulación de malla.
Componente de configuración interactable de Mesh
Para que un objeto sea interactuable, debe agregar el componente Mesh Interactable Setup .
En Hierarchy (Jerarquía), seleccione el objeto .
En el Inspector, haga clic en el botón Agregar componente y, a continuación, seleccione Mesh Interactable Setup (Configuración interactuable de malla).
El componente se agrega con su propiedad Type interactable predeterminada establecida en Basic. (Los tipos de objeto se explicarán en la sección siguiente).
Las propiedades de un grupo de objetos que se comportan igual se pueden configurar con un componente primario de configuración interactable de Malla. Las propiedades se aplicarán a todos los elementos secundarios con elementos rígidos en tiempo de ejecución agregando automáticamente un componente Mesh Interactable Body a cada objeto secundario. Es posible que quiera agregar manualmente el cuerpo interactable de malla para usar los interactables de malla con Visual Scripting, como con eventos de interacción o para modificar la transformación de destino manipulable a través del script visual.
Notas:
Mesh Interactable Body permitirá que cada interacción se comporte de forma independiente.
Un cuerpo rígido debe agregarse a un objeto si quieres que sea físico habilitado.
Ayuda
En la configuración de Mesh Interactables y los componentes del cuerpo interactivo de malla, puede hacer clic en el botón "?" para ir a una página de la documentación de Mesh que contiene ayuda para la característica a la que está conectado el botón.
Tipos de objetos interactivos
Hay cuatro tipos de objeto:
- Básico
- Manipulable
- Equippable
- Throwable
Para elegir un tipo de objeto:
- En el componente Mesh Interactable Setup ,haga clic en la lista desplegable Tipo interactable y, a continuación, seleccione una de las cuatro opciones.
Básico
Como se mencionó anteriormente, este es el tipo predeterminado. Cuando el usuario mantiene el puntero sobre o selecciona el objeto, puede invocar devoluciones de llamada y otros scripts pueden reaccionar. Por ejemplo, si tiene un botón que desea usar para habilitar otro objeto, agregue este tipo interactable al botón con una devolución de llamada OnSelected para habilitar ese otro objeto. El botón será totalmente interactuable simplemente agregando este tipo y un colisionador; no tendrás que hacer nada más.
Nota: Los otros tres tipos interactivos: Manipulable, Equippable y Throwable (explicado a continuación), tienen los mismos atributos que el tipo Básico, pero con características adicionales.
Más información sobre la configuración básica del tipo de objeto
Manipulable
Puede mover un objeto de este tipo desde una distancia; en concreto, se manipula su transformación en tiempo de ejecución y se mueve a través del espacio al final de un rayo de interactor. Los controles abreviados están disponibles para girar o traducir el objeto. Para la manipulación de objetos en la aplicación Mesh, puede activar la configuración de IK para que la mano del avatar siga el objeto . Los objetos manipulables no requieren un cuerpo rígido, pero debe agregar uno si desea que los objetos tengan capacidades físicas.
Más información sobre la configuración del tipo de objeto manipulable
Equippable
Puede obtener un objeto de este tipo. En términos de Malla, decimos que "equipa" el objeto a la mano de su avatar. Para equipar un objeto en el EQUIPO, haga clic en el objeto o presione F mientras el objeto está seleccionado. Para equipar un objeto en la misión, presione el botón 'Grip' mientras se selecciona el objeto. Los objetos equipables contienen configuraciones para destinos IK para la posición del brazo del avatar mientras el objeto está equipado. Los objetivos IK son un desplazamiento del pecho del avatar; esto determina dónde va la mano mientras se mantiene o activa el objeto.
Más información sobre la configuración del tipo de objeto Equippable
Throwable
Como indica el nombre, puede agarrar y producir un objeto de este tipo. Después de agarrar, puede entrar en el modo de objetivo presionando y manteniendo presionado el botón izquierdo del mouse. Esto permitirá que el brazo del avatar siga el objetivo del mouse; para iniciar el objeto, suelte el botón izquierdo del mouse.
Más información sobre la configuración del tipo de objeto Throwable
Hacer que los objetos se puedan interactuar con Visual Scripting
Todos los componentes interactables tienen propiedades y métodos de interacción disponibles para Visual Scripting , por lo que tiene una cantidad ilimitada de formas de hacer que funcionen juntos. Para aprovechar esto, use el componente Mesh Interactable Body dentro de un grafo de script con un nodo a una propiedad disponible, como OnHovered o OnSelected, enlazada a un nodo OnStateChanged . Por ejemplo, el siguiente gráfico de script habilitará el cilindro mientras se presiona el botón y lo deshabilitará cuando se libere el botón. El botón es totalmente interactuable simplemente agregando el script y un colisionador; no tienes que hacer nada más.
Propiedades de scripting visual
Para todos los cuerpos interactables:
- IsHovered (solo lectura): indica si el avatar local mantiene el puntero sobre el objeto.
- IsSelected (solo lectura): indica si algún avatar está seleccionando el objeto o no. Cuando se ejecuta en MeshBrowser, se realizará una red.
- IsSelectedLocally : indica si el avatar local está seleccionando el objeto o no.
- IsMine (solo lectura): true para que el último avatar seleccione o equipe el objeto.
Para Equippables:
- EquippedAt (solo lectura): donde este objeto está equipado: None, DefaultHand, RightHand, LeftHand. Cuando se ejecuta en MeshBrowser, se realizará una red.
- EquipTime (solo lectura): hora en que este objeto estaba equipado. Cuando se ejecuta en MeshBrowser, se realizará una red.
- IsActivated (solo lectura): si este objeto está en estado activado. Solo es válido para los objetos que no se pueden producir. Cuando se ejecuta en MeshBrowser, se realizará una red.
- IsAiming (solo lectura): si el avatar local está en estado de objetivo mientras mantiene este objeto. Solo es válido para los iniciables.
- IsThrowing (solo lectura): si el avatar local está iniciando activamente el objeto. Solo es válido para los iniciables.
- IsEquipped (solo lectura) (solo lectura): si este objeto está equipado actualmente por un avatar. Cuando se ejecuta en MeshBrowser, se realizará una red.
- IsThrowable : si se puede producir este objeto.
- ThrowVelocity : la velocidad para iniciar el objeto cuando se libera.
Para que los manipulables modifiquen la posición de destino:
- Posición de destino (solo lectura): posición de destino del cuerpo cuando se usa el modo de fuerza predeterminada en propiedades interactuables de malla
- Rotación de destino (solo lectura): rotación de destino del cuerpo cuando se usa el modo de fuerza predeterminada en propiedades interactables de malla
- Posición de golpe de rayo (solo lectura): posición del golpe de conversión de rayos del interactor en el cuerpo
- Rotación de aciertos de rayos (solo lectura): rotación del interactor alrededor de la dirección del rayo
- Posición de destino modificada (lectura y escritura): se usa para establecer la nueva posición de destino por el script visual. Esto invalidará la posición de destino predeterminada. El procedimiento recomendado es invalidar esta propiedad:
- Uso de On State Changed of Target Position(Usar al cambiar el estado de la posición de destino). En este caso, el script visual activará un flujo solo cuando el interactor y la nueva posición haya cambiado.
- Uso de la actualización tardía. Si necesita cambiar la transformación de destino en cada fotograma, hágalo en actualización tardía para que la nueva transformación de destino esté disponible inmediatamente en el siguiente fotograma.
- Rotación de destino modificada (lectura y escritura): se usa para establecer la nueva rotación de destino por parte del script visual. Esto invalidará la posición de destino predeterminada.