Compartir a través de


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.

GIF que muestra un asistente de eventos que contiene la Wand en su estado no activado.

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.

GIF que muestra a un asistente de eventos activando el Wand que luego genera fuegos artificiales.

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.

  1. Abra el ejemplo de Toybox y asegúrese de que está en la escena de Toybox .

  2. En Hierarchy (Jerarquía), seleccione el Wand_Prefab GameObject.

    Captura de pantalla de la jerarquía con el objeto prefabricado Wand resaltado.

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

    Captura de pantalla del componente Máquina de scripts de Wand con el botón Editar grafo resaltado.

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.

Captura de pantalla del gráfico de scripts completo de Wand con la segunda sección resaltada.

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.

Captura de pantalla del nodo isMine.

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

Una captura de pantalla del estado activado ha cambiado, si y reproduce nodos de audio de malla.

... y también cambia el valor de la variable de objeto StartGlowVFX a "true".

Captura de pantalla del nodo de valor del objeto establecido con el flujo de inicio de valor vfx.

Tenga en cuenta que el texto anterior a los nodos isMine y On State Changed indica "Local a este cliente".

Una captura de pantalla de es la mía y, en el escenario, los nodos cambiados con el texto local a este cliente resaltado.

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

Captura de pantalla del nodo establecer variable de objeto con el texto compartido por todos los clientes resaltado.

Sugerencia: La variable isMine se encuentra en el script Mesh Interactable Body .

Una captura de pantalla de es un booleano mío 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".

Captura de pantalla del gráfico de scripts completo de Wand con la quinta sección resaltada.

El cambio de estado hace que el valor "true" de startFLowVFX se pase a un nodo if .

Captura de pantalla de la variable get object, en fase cambiada y si los nodos.

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

Captura de pantalla del nodo activo establecido con el valor del booleano que desencadena el efecto de partícula establecido en true.

GIF que muestra un asistente de eventos que contiene la Wand en su estado no activado.

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

Captura de pantalla del gráfico de scripts completo de Wand con la cuarta sección resaltada.

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

Se activa una captura de pantalla del nodo y se presionan otros nodos que provocan que sea true.

Sugerencia: La variable isActivated se encuentra en el script Mesh Interactable Body .

Una captura de pantalla de la variable se activa 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.

Captura de pantalla del gráfico de scripts completo de Wand con la tercera sección resaltada.

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

Captura de pantalla del valor booleano de vfx de inicio cambiado a 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.

Una captura de pantalla del boolen de vfx persistente cambió a false, lo que desactiva el primer efecto de partícula.

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 .

Captura de pantalla de los nodos que desencadenan el sonido de estado activado y el efecto de partícula.

GIF que muestra a un asistente de eventos activando el Wand que luego genera fuegos artificiales.

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 .

Captura de pantalla de los nodos en los que se vuelve a activar el efecto de partícula de vapor de chispa.

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.

GIF que muestra un asistente de eventos que contiene la Wand en su estado no activado.

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.

Captura de pantalla del gráfico de scripts completo de Wand con la primera sección resaltada.

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.

Captura de pantalla de la obtención equipada en el nodo con un valor de La mano predeterminada mientras se mantiene la wanda.

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

Captura de pantalla de la obtención equipada en el nodo con un valor de ninguno después de que se haya quitado la wanda.

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 .

Una captura de pantalla del boolen de vfx persistente cambió a false, lo que desactiva el efecto de partículas de vapor sparkly.

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.

Pasos siguientes