Lumberyard
Guía del usuario (Version 1.20)

Tutorial de Script Canvas: abrir y cerrar una puerta con zonas de desencadenador y variables

Esta característica está en versión preliminar y está sujeta a cambios.

En el siguiente tutorial, creará una puerta que se abre y cierra cuando la esfera controlable entra y sale de un área de desencadenador.

ejemplo


                Gráfico de Script Canvas de ejemplo para la creación de un área de desencadenador.

Esto implica varias tareas:

  • Crear una zona de disparador

  • Agregar nodos de evento

  • Agregar variables

Requisitos previos

Paso 1: Crear una puerta y una zona de disparador

Para crear una puerta y una zona de desencadenador, cree una entidad con entidades secundarias y luego agregue componentes a las entidades secundarias.

Para crear una puerta y una zona de disparador

  1. En Lumberyard Editor, haga clic con el botón derecho en la ventanilla Perspective (Perspectiva) cerca de su esfera controlable y elija Create entity (Crear entidad).

    
                            Cree una entidad en la ventanilla Perspective (Perspectiva).
  2. En el Entity Inspector, en Name (Nombre), escriba Door Group.

  3. Haga lo siguiente para crear una puerta:

    1. En Entity Outliner, haga clic con el botón derecho en Door Group (Grupo de puertas) y seleccione Create child entity (Crear entidad secundaria). Esta entidad secundaria será su puerta.

    2. En el Entity Inspector, en Name (Nombre), escriba Door Mesh.

      
                                    Cree una entidad secundaria denominada Door Mesh (Malla de puerta).
    3. Para la entidad Door Mesh (Malla de puerta), haga clic en Add Component (Añadir componente) y luego elija el componente Mesh.

    4. En el componente Mesh, para Mesh asset (Recurso de malla), haga clic en el icono de exploración (...) y seleccione el archivo SamplesProject\Objects\Primitives\box_1x1.cgf.

      
                                    Seleccione el archivo de malla para crear un componente Mesh para su entidad.
    5. Haga clic en Add Component (Añadir componente) y seleccione el componente Static Physics.

    6. Haga clic en Add Component (Añadir componente) y después elija el componente Mesh Collider. Este componente define la forma de colisión para la entidad Door Mesh (Malla de puerta).

    7. En el componente Transform, para Scale (Escala), configure X como 2.5, Y como 0.5 y Z como 4.0.

    8. Compruebe que la entidad Door Mesh (Malla de puerta) sea similar a la siguiente imagen.

      ejemplo

      
                                        Consulte los componentes y la configuración de la entidad Door Mesh (Malla de puerta).
  4. Haga lo siguiente para crear una zona de disparador:

    1. En Entity Outliner, haga clic con el botón derecho en Door Group (Grupo de puertas) y seleccione Create child entity (Crear entidad secundaria). Esta entidad secundaria será su zona de disparador.

    2. En el Entity Inspector, en Name (Nombre), escriba Door Trigger.

    3. Haga clic en Add Component (Añadir componente) y después haga clic en el componente Trigger Area.

    4. Con la herramienta Move (Mover), ajuste la entidad Door Trigger (Desencadenador de puerta) para que su posición Z se adapte a la entidad Door Mesh (Malla de puerta).

    5. En el componente Trigger Area, haga clic en Add Required Component (Añadir componente requerido) y haga clic Box Shape (Forma de caja).

    6. En el componente Box Shape, para Dimensions (Dimensiones), configure X como 3.0, Y como 9.0 y Z como 6.0.

    7. Haga clic en Add Component (Añadir componente) y después haga clic en el componente Script Canvas.

    8. En Lumberyard Editor, seleccione Tools (Herramientas), Script Canvas.

    9. En el editor de Script Canvas, elija File (Archivo) y New Script (Nuevo script).

    10. Una vez que se cargue el lienzo, elija File (Archivo) y Save As (Guardar como).

    11. En File name (Nombre de archivo), escriba door y haga clic en Save (Guardar).

    12. En el componente Script Canvas, haga clic en el icono de exploración (...), seleccione el archivo door.scriptcanvas y luego haga clic en el botón OK (Aceptar).

  5. Compruebe que la entidad Door Trigger (Desencadenador de puerta) sea similar a la siguiente imagen.

    ejemplo

    
                                Consulte los componentes y las propiedades de la entidad Door Trigger (Desencadenador de puerta).

Paso 2: Crear un script para abrir y cerrar la puerta

Ahora que ha configurado su puerta y su zona de disparador, puede crear un script con el que se abra y cierre la puerta cuanto otra entidad entra en la zona de disparador o la abandona.

Para crear un script que abra y cierre la puerta

  1. En el editor de Script Canvas, abra el archivo door.scriptcanvas.

  2. En Node Palette (Paleta de nodos), escriba trigger en el cuadro de búsqueda y en Gameplay (Juego), Trigger Area (Área de desencadenador), arrastre On Area Entered (En área entrada) al lienzo.

    nota

    Con este nodo de evento, puede usar fácilmente el sistema de mensajería por EBus de Lumberyard. Para obtener más información, consulte Trabajo con el sistema de bus de eventos (EBus).

  3. En el nodo Trigger Area (Área de desencadenador), haga clic en Add/Remove Events (Añadir/Quitar eventos) y después seleccione la casilla de verificación On Area Exited (En área de donde se salió). Esto expone los eventos de entrada y salida desde el EBus de Trigger Area (Área de desencadenador).

    
                            Añada el nodo Trigger Area (Área de desencadenador) en el editor de Script Canvas.
  4. En el panel de la parte inferior derecha, en el Variable Manager (Administrador de variables), haga clic en Create Variable (Crear variable).

    nota

    Puede almacenar y modificar valores persistentes en su gráfico con nodos de variables. Para obtener más información, consulte Administración de variables de Script Canvas.

  5. Seleccione Vector3, haga doble clic en Variable 1 y cambie el nombre de la variable de entrada a opened_position.

  6. En Node Inspector, especifique 2 para el valor Z. Con un valor positivo en el eje Z, la puerta se desliza hacia arriba. Dado que la entidad de puerta es un elemento secundario de Door Group (Grupo de puertas), puede especificar las posiciones relativas locales para controlar las posiciones abiertas y cerradas de la puerta.

  7. Cree otra variable Vector3 y asígnele el nombre closed_position. Conserve el valor predeterminado 0, 0, 0.

  8. Cree otra variable Vector3 y asígnele el nombre current_position. Conserve el valor predeterminado 0, 0, 0. Esta variable establece la posición actual de la puerta.

  9. Cree otra variable Vector3 y asígnele el nombre destination_position. Conserve el valor predeterminado 0, 0, 0. Esta variable establece la posición de destino de la puerta cuando la entidad entra y sale del área de activación.

    ejemplo

    Debe tener cuatro nodos de variable Vector3 como los siguientes:

    
                            Variables Vector3 para Variable Manager (Administrador de variables).
  10. En Variable Manager (Administrador de variables), haga lo siguiente:

    1. Seleccione y arrastre el nodo open_position (vacante) al lienzo y, a continuación, haga clic en Get opened_position (Obtener vacante).

    2. Seleccione y arrastre el nodo closed_position (puesto cerrado) en el lienzo y, a continuación, haga clic en Get closed_position (Obtener puesto cerrado).

    3. Seleccione y arrastre dos nodos destination_position (puesto_destino) al lienzo y, a continuación, haga clic en Set destination_position (Establecer puesto_destino).

  11. En el lienzo, realice las siguientes conexiones:

    1. En On Area Entered (En área entrada), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Get opened_position (Obtener vacante).

    2. En On Area Exited (En área desde donde se ha salido), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del otro nodo Get closed_position (Obtener puesto_cerrado).

    3. En Get opened_position (Obtener vacante), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del otro nodo Set destination_position (Establecer posición_destino).

    4. En Get opened_position (Obtener vacante), arrastre el pin Vector3 para conectarlo con el pin Vector3 del otro nodo Set destination_position (Establecer posición_destino).

    5. En Get closed_position (Obtener puesto_cerrado), arrastre el pin Out para conectarlo con el pin In del otro nodo Set destination_position (Establecer puesto_destino).

    6. En Get closed_position (Obtener puesto_cerrado), arrastre el pin Vector3 para conectarlo con el pin Vector3 del otro nodo Set destination_position (Establecer posición_destino).

    7. Compruebe que el gráfico door.scriptcanvas es similar al siguiente.

      ejemplo

      
                                    Conecte el nodo Trigger Area (Área de desencadenador) de los nodos de variable.
  12. Realice las siguientes acciones para obtener la posición de la entidad Door Mesh (Malla de puerta) e interpolarla al destino:

    1. En Node Palette (Paleta de nodos), escriba get local en el cuadro de búsqueda.

    2. En Entity (Entidad), Transform (Transformar), arrastre Get Local Translation (Obtener conversión local) al lienzo. Puede utilizar este nodo para obtener la posición actual de la entidad Door Mesh (Malla de puerta) e interpolar al destino. Se aplica una traslación local a la traslación de la entidad en relación con su principal.

    3. En el nodo Get Local Translation (Obtener conversión local), párese en el cuadro de texto Source (Origen) y haga clic en el botón de destino. Cuando está seleccionado, el botón de destino tiene un contorno naranja.

      
                                    Nodo Get Local Translation (Obtener conversión local).
    4. En Entity Outliner, seleccione Door Mesh (Malla de puerta) para asignar la entidad Door Mesh (Malla de puerta) a la propiedad Source (Origen) del nodo Get Local Translation (Obtener conversión local).

      
                                    Añada la entidad Door Mesh (Malla de puerta) como origen del nodo Get Local Translation (Obtener conversión local).

      nota

      Para restablecer una referencia a una entidad, haga clic con el botón derecho dos veces en el cuadro de texto Source (Origen) y seleccione Set to Self (Establecer en sí mismo).

    5. En el editor de Script Canvas, desde los dos nodos Set destination_position (Establecer puesto_destino), arrastre el pin Out (Salida) para conectarlo al pin In (Entrada) de Get Local Translation (Obtener conversión local).

      
                                    Conecte los nodos de variables Set destination_position (Establecer puesto_destino) en el nodo Get Local Translation (Obtener conversión local).

      nota

      Cuando se insertan varias conexiones en un único pin lógico, el nodo se ejecuta cada vez que se dispara la ejecución. El nodo se ejecuta más de una vez en el mismo ciclo de juego si se activan varias ejecuciones simultáneamente.

  13. Realice lo siguiente para ejecutar nodos durante una cantidad de tiempo específica, en segundos:

    1. En Variable Manager (Administrador de variables), arrastre current_position (puesto_local) al lienzo y haga clic en Set current_position (Establecer puesto_actual).

    2. En Get Local Translation (Obtener conversión local), arrastre el pin Out (Salida) para conectarlo al pin In (Entrada) del nodo Set current_position (Establecer puesto_actual).

    3. En Get Local Translation (Obtener conversión local), arrastre el pin Translation (Conversión) para conectarlo al pin Vector3 del nodo Set current_position (Establecer_puesto).

    4. En Node Palette (Paleta de nodos), escriba duration en el cuadro de búsqueda y en Timing (Tiempo), arrastre Duration (Duración) al lienzo.

    5. En Set current_position (Establecer puesto_actual), arrastre el pin Out (Salida) para conectarlo al pin Start (Inicio) del nodo Duration (Duración). Al activar el nodo Duration (Duración), se reinicia el tiempo.

    6. En el nodo Duration (Duración), para Duration (Duración), escriba 1.0 (segundos).

      ejemplo

      
                                        Conecte el nodo Get Local Translation (Obtener conversión local) al nodo Set current_position (Establecer puesto_actual) al nodo Duration (Duración).
  14. Realice lo siguiente para configurar la interpolación entre la posición actual y el destino:

    1. En Variable Manager (Administrador de variables), seleccione y arrastre current_position (puesto_local) al lienzo y haga clic en Get current_position (Obtener puesto_actual).

    2. En Variable Manager (Administrador de variables), seleccione y arrastre destination_position (puesto_destino) al lienzo y haga clic en Get destination_position (Obtener puesto_destino).

    3. En Node Palette (Paleta de nodos), escriba lerp en el cuadro de búsqueda y bajo Math (Matemáticas), Vector3, arrastre Lerp desde Node Palette (Paleta de nodos) al lienzo. Este nodo combina dos valores en función de la propiedad Percentage (Porcentaje).

    4. En Duration (Duración), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Get current_position (Obtener puesto_actual).

    5. En Duration (Duración), arrastre el pin Elapsed (Transcurrido) para conectarlo con el pin Percentage (Porcentaje) del nodo Lerp.

    6. En Get current_position (Obtener puesto_actual), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Get destination_position (Obtener puesto_destino).

    7. En Get current_position (Obtener puesto_actual), arrastre el pin Vector3 para conectarlo al pin Start (Inicio) del nodo Lerp.

    8. En Get destination_position (Obtener puesto_destino), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Lerp.

    9. En Get destination_position (Obtener puesto_destino), arrastre el pin Vector3 para conectarlo con el pin In (Entrada) del nodo Lerp.

      ejemplo

      
                                        Utilice el nodo Lerp para combinar los valores del pin Percentage (Porcentaje).
  15. Realice lo siguiente para configurar la posición de la puerta cuando el nodo Duration (Duración) combina la posición actual y la de destino:

    1. En Node Palette (Paleta de nodos), escriba set local translation en el cuadro de búsqueda y en Entity (Entidad), Transform (Transformar), arrastre Set Local Translation (Establecer conversión local) al lienzo.

    2. En Lerp, arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Set Local Translation (Establecer conversión local).

    3. En Lerp, arrastre el pin Vector3 para conectarlo con el pin Translation (Convertir) del nodo Set Local Translation (Establecer conversión local).

    4. En el nodo Set Local Translation (Establecer conversión local), párese en el cuadro de texto Source (Origen) y haga clic en el botón de destino.

    5. En Entity Outliner, seleccione Door Mesh (Malla de puerta) para asignar la entidad Door Mesh (Malla de puerta) a la propiedad Source (Origen) del nodo Set Local Translation (Establecer conversión local).

    6. Compruebe que el gráfico door.scriptcanvas es similar al siguiente.

      ejemplo

      
                                        Gráfico de Script Canvas acabado para crear un área de desencadenador para una entidad.
  16. Guarde el gráfico.

  17. En Lumberyard Editor, presione Ctrl+G para entrar en el modo de juego y probar el script.

  18. Para hacer avanzar la esfera en la zona de desencadenador de la puerta y hacer que se abra, pulse las teclas W, A y D.

  19. Para hacer retroceder la esfera de la zona de desencadenador de la puerta y provocar que se cierre, pulse la tecla S.

  20. Cuando haya terminado de probar el script, presione Esc.