Cómo funciona la wanda equipable
Información general sobre Wand
Importante
Si no está familiarizado con Equippables, le recomendamos que lea el artículo denominado Hold objects de forma realista con Equippables antes de leer este artículo.
Wand es uno de los Equippables disponibles en el paquete Toybox que recibe al descargar nuestros ejemplos de Mesh desde GitHub. Cuando recoges la wanda, la mantienes delante de ti casi en el pecho alto y la Wand muestra un efecto de partícula de vapor brillante en su punta.
Para activar la Wand, haga clic en el botón izquierdo del mouse (PC) o el botón de desencadenador del controlador (Quest). El brazo empuja hacia delante y la punta del Wand emite fuegos artificiales que se generan a través de otro efecto de partícula.
El tipo de activación de Wand se establece en único. Esto significa que tan pronto como se ejecuta a través de sus comportamientos, wand de-activates y el brazo vuelve a su posición inicial. Haga clic de nuevo para repetir los comportamientos.
Gráfico de script wand
Echemos un vistazo a cómo funciona Wand examinando el grafo de script que está asociado a él.
Abra el ejemplo de Toybox y asegúrese de que está en la escena de Toybox .
En Hierarchy (Jerarquía), seleccione el Wand_Prefab GameObject.
En inspector, vaya al componente Script Machine y observe que contiene un recurso de grafo de script denominado MagicWand. Haga clic en el botón Editar gráfico .
Detectar cuándo se selecciona la wanda
En el script visual adjunto a wand, iniciamos nuestro análisis en el grupo de nodos denominado Comprobar si se mantiene para iniciar el resplandor mágico.
El nodo que determina si la wanda se recoge o no es Mesh Interactable Body: Is Mine. Es un valor Boolean y comienza con un valor false.
Cuando un avatar recoge la Wand, su estado cambia. El valor de isMine cambia a "true" y ese valor se pasa a un nodo if . Esto hace que un "sonido de recogida" desencadene ...
... y también cambia el valor de la variable de objeto StartGlowVFX a "true".
Tenga en cuenta que el texto anterior a los nodos isMine y On State Changed indica "Local a este cliente".
Estos nodos y el sonido que se desencadena se producen localmente. Sin embargo, queremos que los demás asistentes del evento experimenten lo que sucede con wand. Esto se logra insertando el nodo Establecer variable de objeto que muestra el texto "Compartido por todos los clientes".
Sugerencia: La variable isMine se encuentra en el script Mesh Interactable Body .
Activar el efecto de partícula de estado no activado
Recogemos el flujo en el grupo de nodos denominado Networking startMagic. El propósito de este grupo de nodos es activar y desactivar el efecto de partícula inicial que aparece en la punta de la wanda. Llamaremos este efecto "vapor brillante".
El cambio de estado hace que el valor "true" de startFLowVFX se pase a un nodo if .
... y esto hace que el valor de la variable de objeto PersistentVFX también sea true, lo que desencadena el efecto del sistema de partículas vfx_wand-ethereal_persistent_02 ("vapor brillante").
Activación de la wan
Supongamos que el asistente hace clic en el botón izquierdo del mouse (PC) o el botón de desencadenador del controlador (Quest). Esto se denomina "activar el Equippable". Hace que la posición del brazo del avatar cambie y en el grupo de nodos denominado Networking isPressed ...
... el clic lo detecta el nodo Cuerpo interactivo de malla: está activado . Este nodo es un valor booleano con un valor predeterminado de false. El clic cambia Se activa en "true"; el nodo On State Changed pasa el valor "true" al nodo If . Esto hace que el nodo Establecer variable establezca el valor booleano isPressed en lo contrario de lo que era antes (así que ahora es "true").
Sugerencia: La variable isActivated se encuentra en el script Mesh Interactable Body .
Activar el efecto de partícula de estado activado
Recogemos el flujo en el grupo de nodos denominado Spell cast (Conversión ortográfica) al hacer clic.
Este grupo de nodos desencadena el efecto de partículas de fuegos artificiales al final de la Wand que se produce cuando el asistente hace clic en el botón y activa la wanda. Después de que wand vuelva a su estado no activado, este grupo de nodos vuelve a activar el primer efecto de partícula ("vapor brillante").
En el gráfico, el valor "true" de isPressed* hace que un nodo if desencadene el nodo Set Variable: Object . Este nodo establece la variable startGlowVFX en "false".
Esto desencadena de nuevo los nodos en el grupo de nodos networking startMagic . Esta vez, el valor "false" de startGlowVFX hace que el efecto de partícula PersistentVFX se desactive.
Vuelva a la conversión ortográfica en el grupo de nodos de clic . Después de un breve período de enfriamiento, se reproduce un sonido y, a continuación, se desencadena un efecto de partícula diferente en la punta de la wanda: vfx_wand_blast_trail_spheres_01 ("fuegos artificiales"), que es el valor de la variable de objeto ShootTrailVFX .
Volver a activar el efecto de partícula no activa
Después de otro breve período de enfriamiento, el valor booleano startGlowVFX se cambia a "true", lo que convierte el efecto del sistema de partículas de vfx_wand_ethereal_persistent_02 ("vapor brillante") en en el grupo Networking startMagic .
En este punto, el brazo del avatar vuelve a la posición en la que estaba antes de que se activara la Wand y el vapor brillante se pueda ver de nuevo.
Liberar la wanda
Si wand tenía el tipo de activación "alternancia", cuando el asistente hizo clic de nuevo, desencadenaría un segundo , un "estado" diferente o un conjunto de comportamientos. Sin embargo, el tipo de activación de wand es "único", lo que significa que cada vez que el asistente hace clic, se repite el mismo "estado" o conjunto de comportamientos.
Para liberar la wanda, el asistente presiona la tecla Espacio; esto hace que la wanda caiga al suelo. Cuando no se mantiene la wanda, no queremos que el efecto de partícula de vapor de chispa se ejecute en la punta de la wanda. Los nodos del si no están ocupados, desactivar el grupo de nodos wand desactiva este efecto de partícula.
Mientras se mantiene la wanda, el valor del cuerpo interactable de malla: Get Equipped At* es "DefaultHand". El valor del nodo Equip Location (un valor booleano) es "None". Estos dos valores se comparan en el nodo Igual (también un valor booleano); dado que no son iguales, la salida de Equal es "false" y si no se desencadena el nodo.
Cuando se quita la wand, el valor de Get Equipped At cambia a "None". Esto hace que los nodos Equal e If produzcan "true". Esto desencadena el nodo Set Variable: Object que convierte el valor de la variable de objeto startGlowVFX en "false".
Esto desencadena de nuevo los nodos del grupo de nodos Networking startMagic y desactiva el efecto de partícula "vapor de sparkly", vfx_wand_ethereal_persistent_02, que es el valor de la variable de objeto PersistantVFX .
Sugerencias para experimentar con el script
- Crea diferentes efectos que se pueden desencadenar cuando se recoge y mantiene uno de los Equippables existentes.
- Cree nuevos Equippables que podrían usar algunos de los efectos existentes. Por ejemplo, ciertos tipos de fuegos artificiales podrían usar los efectos "sparkle" que actualmente usa wand.
- Crea diferentes efectos y comportamientos para un nuevo Equippable que se puede desencadenar cuando se mantiene presionado el Equippable y se presiona el botón izquierdo del mouse (PC) o el botón de controlador (Quest). Por ejemplo, en lugar de una wanda, podría tener una barra de pesca que se desentraje cuando presiona el botón.
- Piense en la diferencia entre tener un movimiento de objeto directamente a su estado activado cuando se selecciona (por ejemplo, drill) y tiene un objeto que comienza sin activarse y, a continuación, se mueve a su estado activado después de que los asistentes haga clic (por ejemplo, la tableta). Haga que los objetos que aprovechen ambos enfoques.