Tutorial de Script Canvas Apertura y cierre de una puerta con zonas de desencadenador y variables - Guía del usuario de Lumberyard

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial de Script Canvas Apertura y cierre de una puerta con zonas de desencadenador y variables

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 lienzo de script de ejemplo para crear un área de desencadenador.

Esto implica varias tareas:

  • Crear una zona de disparador

  • Agregar nodos de evento

  • Agregar variables

Prerequisites

Paso 1: Creación de una puerta y un área 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ónPerspectivacerca de la esfera controlable y elijaCrear entidad.

    
                            Cree una entidad en elPerspectivaVista gráfica.
  2. En el navegadorEntity Inspector, paraNombreEn, introduzcaDoor Group.

  3. Haga lo siguiente para crear una puerta:

    1. En el navegadorEntity Outliner, haga clic derechoGrupo Portazoy elijaCreate child entity (Crear una entidad secundaria). Esta entidad secundaria será su puerta.

    2. En el navegadorEntity Inspector, paraNombreEn, introduzcaDoor Mesh.

      
                                    Cree una entidad secundaria denominadaPortazo.
    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 unaMesh (Malla)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 laPortazoEntidad.
  4. Haga lo siguiente para crear una zona de disparador:

    1. En el navegadorEntity Outliner, haga clic derechoGrupo Portazoy elijaCreate child entity (Crear una entidad secundaria). Esta entidad secundaria será su zona de disparador.

    2. En el navegadorEntity Inspector, paraNombreEn, introduzcaDoor 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, elijaHerramientas de,Script Canvas.

    9. En el navegadorScript Canvaseditor, elijaArchivo,Nueva secuencia de comandos.

    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 navegadorScript CanvasEn, haga clic en el botón (...), seleccione el iconodoor.scriptcanvasy, a continuación, haga clic enACEPTAR.

  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 secciónPortazoEntidad.

Paso 2: Creación de 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 navegadorScript CanvasAbra el editor dedoor.scriptcanvasfile.

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

    
                            Adición de laTrigger AreaNodo enScript CanvasEditor  de .
  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 paraVariable 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

      
                                    Connect aTrigger AreaA 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.

      
                                    Obtener traducción localNodo.
    4. En el navegadorEntity Outliner, seleccionePortazoasignar laPortazoa la entidadFuenteen la propiedadObtener traducción localNodo.

      
                                    Adición de laPortazocomo el origen de la entidadObtener traducción localNodo.
      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 navegadorScript Canvaseditor, desde ambosEstablecer destination_position, arrastre elOutpara conectarlo alEnFijación deObtener traducción local.

      
                                    Connect aEstablecer destination_positiona los nodos variablesObtener traducción localNodo.
      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

      
                                        Connect aObtener traducción localNodo ORDefinir posición_actualNodo ORDuraciónNodo.
  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

      
                                        UsarLerppara combinar los valores del nodoPercentageClips.
  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 el navegadorEntity Outliner, seleccionePortazoasignar laPortazoa la entidadFuenteen la propiedadEstablecer conversión localNodo.

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

      ejemplo

      
                                        Gráfico de lienzo de script terminado para crear un área de desencadenador para una entidad.
  16. Guarde el gráfico.

  17. En Lumberyard Editor, pulseCtrl+GPara 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.