Tutorial de Script Canvas Disparar a un objetivo generando entidades y detectando colisiones - 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 Disparar a un objetivo generando entidades y detectando colisiones

Este tutorial se basa en los conocimientos adquiridos en los dos tutoriales anteriores. En el tutorial siguiente, cree una esfera controlable que dispara proyectiles a un objetivo.

ejemplo


                Gráfico de de ejemplo Script Canvas con destinos de colisión.

Esto implica varias tareas:

  • Generar entidades

  • Agregar scripts que se ejecutan en las entidades generadas

  • Configurar colisiones

  • Agregar filtrado por etiquetas

Prerequisites

Paso 1: Configuración de una entidad de proyectil

Para crear una entidad de proyecti, cree una entidad y, a continuación, añada el componente Mesh, Rigid Body, Mesh Collider y los compomentes Script Canvas.

Para crear una entidad de proyectil

  1. Haga Lumberyard botón derecho en el editor dePerspectivacerca de la esfera y elijaCrear entidad.

  2. En el navegadorEntity Inspector, realice una de las siguientes opciones:

    1. En Nombre, escriba Projectile.

    2. En el componente Transform, para Scale (Escala), configure X como 0.25, Y como 0.25 y Z como 0.25.

      
                                    Transformaciónpara la propiedadProyectilesEntidad.
    3. Haga clic en Add Component (Añadir componente) y después haga clic en el componente Mesh.

    4. En el componente Mesh, para Mesh asset (Recurso de malla), haga clic en el botón de exploración (...), seleccione el archivo \SamplesProject\Objects\default\primitive_sphere.cgf y luego haga clic en el botón OK (Aceptar).

      
                                    Seleccione el recurso de la malla de la entidad de proyectil.
  3. En el navegadorEntity InspectorEn elAdd ComponentElija los siguientes componentes:

    • Rigid Body Physics

    • Mesh Collider (Colisionador de mall)

    • Script Canvas

  4. En Lumberyard Editor, elijaHerramientas de,Script Canvas.

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

  6. Una vez que se cargue el gráfico, elija File (Archivo) y Save As (Guardar como).

  7. En el cuadro de diálogo Save As (Guardar como), en File name (Nombre de archivo), escriba projectile y después haga clic en Save (Guardar).

  8. En el navegadorScript Canvascomponente, paraActivo Script CanvasHaga clic en el botón (...), seleccione el botónprojectile.scriptcanvasy, a continuación, haga clic enACEPTAR.

    
                            Seleccione el archivo de gráfico Script Canvas para la entidad.
  9. Compruebe que la entidad Projectile (Proyectil) sea similar a la siguiente imagen.

    ejemplo

    
                                Los componentes y propiedades de laProyectilesEntidad.

Paso 2: Cree un script para impulsar el proyectil

Ahora que ha configurado el proyectil, puede crear un script que lo impulse hacia delante cuando se genere.

Para crear un script de proyectil

  1. En el navegadorScript CanvasAbra el editor deprojectile.scriptcanvasSi aún no está abierto desdePaso 1: Configuración de una entidad de proyectil.

  2. En Node Palette (Paleta de nodos), escriba start en el cuadro de búsqueda.

  3. En Utilities (Utilidades), arrastre On Graph Start (Al inicio del gráfico) desde Node Palette (Paleta de nodos) hasta el gráfico. Este nodo del evento solo se ejecuta durante el primer ciclo tras la inicialización de la entidad.

  4. En Node Palette (Paleta de nodos), escriba Avanzar.

  5. En Entity (Entidad), Transform (Transformar) , arrastre el nodo Get Forward (Avanzar) hasta el gráfico.

  6. En On Graph Start (Al inicio del gráfico), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Get Forward (Avanzar).

    
                            Get Forward (Adelante)nodo en Script Canvas.
  7. En el nodo Get Forward (Avanzar), para Scale (Escala), escriba 200.

  8. En Node Palette (Paleta de nodos), escriba Set Velocity (Definir velocidad) y arrastre el nodo hasta el gráfico.

  9. En Get Forward (Avanzar), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Set Velocity (Definir velocidad).

  10. En Get Forward (Avanzar), arrastre el pin Forward (Avance) hasta el pin Velocity (Velocidad) del nodo Set Velocity (Definir velocidad) .

    
                            Configurar velocidadnodo en Script Canvas.
  11. Para configurar una duración para el proyectil, haga lo siguiente:

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

      
                                    Delaynodo en Script Canvas.
    2. En Timing (Sincronización), arrastre Delay (Retraso) desde la Node Palette (Paleta de nodos) al gráfico.

    3. En On Graph Start (Al inicio del gráfico), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Delay (Retraso).

    4. En el nodo Delay (Retraso), para Time (Tiempo), escriba 1.0.

      
                                    Connect aOn Graph Start (Al inicio del gráfico)Nodo ORDelayNodo.
  12. Para destruir el proyectil después de la hora configurada, haga lo siguiente:

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

    2. En Entity (Entidad), Game Entity (Entidad de juego), arrastre Destroy Game Entity and Descendants (Destruir entidad de juego y descendientes) desde Node Palette (Paleta de nodos) hasta el gráfico.

      
                                    UsarDestruir entidad de juego y descendientesPara destruir las entidades que se han generado.
    3. En Delay (Retraso), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Destroy Game Entity and Descendants (Destruir entidad de juego y descendientes).

      
                                    Connect aDelayNodo ORDestruir entidad de juego y descendientesNodo.
    4. Compruebe que el gráfico projectile.scriptcanvas es similar al siguiente.

      ejemplo

      
                                        Script de ejemplo para la entidad de proyectil en Script Canvas.
  13. En el navegadorScript Canvaseditor, elijaArchivo,Save (Guardar). También puede pulsar Ctrl+S.

Paso 3: Guardar la entidad del proyectil como sector

Ahora que ha creado un script para el proyectil, puede guardar la entidad del proyectil como un sector.

Para guardar la entidad de proyectil como un sector

  1. En Lumberyard Editor, en elEntity Outliner, haga clic derechoProyectilesy elijaCrear sector.

  2. En el cuadro de diálogo Save As (Guardar como), en File name (Nombre de archivo), escriba projectile y después haga clic en Save (Guardar).

  3. Para habilitar que el proyectil se genere, haga lo siguiente:

    1. En el navegadorAsset Browser, vaya a laprojectile.sliceArchivo de que acaba de crear.

      
                                    Seleccione laprojectile.sliceen el archivoAsset Browser.
    2. Haga clic con el botón derecho en projectile.slice y seleccione Set Dynamic Slice (Establecer sector dinámico). Los scripts que se ejecutan en un sector dinámico remapearán correctamente las asignaciones de la entidad de origen con la entidad en la que se ejecuta el gráfico.

      
                                    Establecimiento de la propiedad deprojectile.slicecomo sector dinámico en el archivo deAsset Browser.
  4. En el navegadorEntity Outliner, haga clic derechoProyectilesA continuación, haga clic enEliminar. Dado que generará la entidad del proyectil dinámicamente desde el script del jugador, ya no necesitará la entidad en su escena.

Paso 4: Configuración de la entidad del jugador para generar el sector

Ahora que ha creado un sector, puede configurar su entidad Player (Jugador) para generar el sector.

Para configurar la entidad del jugador para generar el sector

  1. En Lumberyard Editor, en elEntity OutlinerHaga clic derecho en elJugadorentidad y elijaCreate child entity (Crear una entidad secundaria).

  2. Introduzca un nombre para la entidad secundaria como, por ejemplo, generador.

  3. En el componente Transform, para la propiedad Translate Y (Convertir Y), escriba 1.0. De este modo se establece el punto de generación 1 metro por delante de la entidad principal.

  4. Seleccione la entidad secundaria y en el cuadroEntity InspectorEn elAdd ComponentElija y luego seleccione la opciónSpawnercomponente.

  5. En el componente Spawner, para Dynamic slice (Sector dinámico), haga clic en el icono de examinar (...), seleccione el archivo projectile.slice y luego haga clic en OK (Aceptar).

    
                            Seleccione laprojectile.slicepara laSpawner (Generador)componente.
  6. Compruebe que la entidad spawner (generador) sea similar a la siguiente imagen.

    
                            Los componentes y las propiedades delGeneradorEntidad.

Paso 5: Configuración del enlace de entrada para el proyectil

Ahora que ha agregado el componente Spawner, puede configurar el enlace de entrada para disparar el proyectil cuando pulse la Spacebar (Barra espaciadora).

Para configurar el enlace de entrada del proyectil

  1. En Lumberyard Editor, en elEntity OutlinerSeleccione laJugadorEntidad.

  2. En el navegadorEntity InspectorEn, enInputHaga clic en el botónEditor de enlaces de entradaicon .

  3. En la ventana Edit Asset (Editar recurso), haga lo siguiente:

    1. En Input Event Groups (Grupos de eventos de entrada), haga clic en + para agregar un nuevo grupo de eventos de entrada.

    2. Expanda el grupo de eventos de entrada. Para Event name (Nombre de evento), escriba shoot.

    3. En Event Generators (Generadores de eventos), haga clic en + para agregar un generador de eventos.

    4. En el cuadro de diálogo Class to create (Clase que debe crearse), haga clic en OK (Aceptar) para agregar una clase de entrada.

    5. Expanda shoot (disparo), Event Generators (Generadores de eventos), gamepad_button_a. En Input Device Type (Tipo de dispositivo de entrada), seleccione keyboard (teclado).

    6. En Input Name (Nombre de entrada), elija keyboard_key_edit_space.

    7. Compruebe que la configuración aparece tal y como se muestra en la imagen siguiente.

      
                                    Ejemplo de enlaces de entrada para la entidad.
    8. En la ventana Edit Asset (Editar recurso), elija File (Archivo), Save (Guardar).

Paso 6: Agregar lógica al script del jugador para generar el proyectil

Ahora que ha agregado el enlace de entrada, puede agregar lógica al script Player (Jugador), para generar el proyectil al pulsar la Spacebar (Barra espaciadora).

Para agregar lógica al script del jugador

  1. En Lumberyard Editor, elijaHerramientas de,Script Canvas.

  2. En el navegadorScript Canvaseditor, elijaArchivo,Open. Seleccione player.scriptcanvas y haga clic en Open (Abrir).

  3. Realice lo siguiente para habilitar el nodo de eventos para que escuche al evento de entrada:

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

    2. En Gameplay (Juego), Input (entrada), arrastre Input Handler (Controlador de entrada) desde Node Palette (Paleta de nodos) hasta el gráfico. Input Handler (Controlador de entrada) es un nodo de eventos. Cuando se produce una evento, el nodo envía un mensaje al script.

    3. Para Event name (Nombre de evento), escriba shoot.

      
                                    Controlador de entradanodo en Script Canvas.
  4. Realice lo siguiente para controlar el ritmo de disparo para el evento de disparo:

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

    2. En Logic (Lógica), arrastre Once (Una vez) desde Node Palette (Paleta de nodos) al gráfico.

      
                                    Oncenodo en Script Canvas.
    3. En Input Handler (Controlador de entrada), arrastre el pin Held (Retenido) para conectarlo con el pin In (Entrada) del nodo Once (Una vez).

      
                                    Oncenodo en Script Canvas.
    4. En Node Palette (Paleta de nodos), escriba spawn en el cuadro de búsqueda.

    5. En Gameplay (Juego), Spawner (Generador), arrastre Spawn (Generar) desde Node Palette (Paleta de nodos) hasta el gráfico.

    6. En Once (Una vez), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Spawn (Generar).

    7. En el nodo Spawn (Generar), en Source (Origen), escriba el nombre de la entidad secundaria con el componente Spawner asociado desde el Paso 4.

      
                                    Connect aOnceNodo ORSpawnnodo en Script Canvas.
    8. En Node Palette (Paleta de nodos), escriba delay en el cuadro de búsqueda.

    9. En Timing (Sincronización), arrastre Delay (Retraso) desde la Node Palette (Paleta de nodos) al gráfico.

      
                                    Delaynodo en Script Canvas.
    10. En Spawn (Generar), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Delay (Retraso).

    11. En el nodo Delay (Retraso), para Time (Tiempo), escriba 0.25 (segundos).

    12. En Delay (Retraso), arrastre el pin Out (Salida) para conectarlo con el pin Reset (Restablecer) del nodo Once (Una vez).

    nota

    La ejecución de nodos siempre va de izquierda a derecha de un nodo. Para obtener más información, consulte Entradas, salidas y tipos de conexión.

  5. Compruebe que el gráfico player.scriptcanvas es similar al siguiente.

    ejemplo

    
                                Script de ejemplo para entidades generadas.
  6. Elija File (Archivo), Save (Guardar). También puede pulsar Ctrl+S.

  7. En Lumberyard Editor, pulseCtrl+GPara entrar en el modo de juego y probar el script.

  8. Haga lo siguiente:

    • Para mover la esfera hacia delante, presione W.

    • Para mover la esfera hacia atrás, presione S.

    • Para mover la esfera de lado a lado, presione A y D.

    • Para generar un proyectil que se propulsa hacia delante, pulse la Spacebar (Barra espaciadora).

      Si mantiene pulsada la Spacebar (barra espaciadora), se dispara la generación una vez y el nodo Delay (Retraso) reinicia el nodo Once (Una vez) cada 0,25 segundos.

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

Paso 7: Creación de una entidad de destino

Ahora que la entidad Player (Jugador) dispara proyectiles, puede agregar una entidad Target (Objetivo) para que la destruya la entidad Player (Jugador).

Para crear una entidad de destino

  1. En Lumberyard Editor, cree una entidad: Haga clic derecho en elPerspectivacerca de la esfera controlable y elijaCrear entidad.

  2. En el navegadorEntity Inspector, paraNombreEn, introduzcaTarget.

    
                            Cree una entidad denominadaObjetivo.
  3. Haga clic en Add Component (Añadir componente) y después haga clic en el componente Mesh.

  4. En el componente Mesh, para Mesh asset (Recurso de malla), haga clic en el botón de exploración (...), seleccione el archivo \SamplesProject\Objects\default\primitive_cylinder.cgf y luego haga clic en el botón OK (Aceptar).

    
                            Asigne un recurso de malla aObjetivoEntidad.
  5. Haga clic en Add Component (Añadir componente) y luego elija los componentes siguientes:

    • Static Physics

    • Mesh Collider (Colisionador de mall)

    • Tag

  6. En el componente Tag, haga clic en + para añadir una etiqueta y para [0], escriba Target.

    
                            EtiquetarComponente asociado a laObjetivoEntidad.
  7. Compruebe que la entidad Target (Objetivo) sea similar a la siguiente imagen.

    ejemplo

    
                                Componentes de ejemplo asociados a laObjetivoEntidad.

Paso 8: Agregar lógica al proyectil para destruir entidades objetivos

Ahora que ha creado la entidad Target (Objetivo), puede agregar lógica al proyectil para destruir entidades que tengan la etiqueta Target (Objetivo).

Para agregar lógica para destruir entidades objetivos

  1. En el navegadorScript CanvasAbra el editor deprojectile.scriptcanvasfile.

  2. Haga lo siguiente para agregar nodos de colisión:

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

    2. En Physics (Física), Physics Component (Componente de física), arrastre On Collision (En colisión) desde Node Palette (Paleta de nodos) hasta el gráfico. Este nodo tiene una introducción de datos especial denominada colisión.

      
                                    En colisiónnodo en Script Canvas.
  3. Haga lo siguiente para agregar un nodo Set hit (Establecer acierto):

    1. En el panel de la parte inferior derecha, en el Variable Manager (Administrador de variables), haga clic en Create Variable (Crear variable). Puede usar variables para almacenar y modificar valores persistentes en su gráfico.

      Para obtener más información, consulte Administración de variables de Script Canvas.

    2. Seleccione Collision (Colisión), haga doble clic en Variable 1 y cambie el nombre de la variable de entrada a hit.

    3. Haga clic con el botón derecho del ratón en la variable hit y elija Set hit (Establecer acierto).

  4. Seleccione el pin Out (Salida) para On Collision (En colisión) y arrástrelo para conectarlo al pin In (Dentro) para el nodo Set hit (Establecer acierto).

  5. Desde On Collision (En colisión), arrastre el pin Collision (Colisión) para conectarlo al pin Collision (Colisión) del nodo Set hit (Establecer acierto).

    
                            Connect aEn colisiónNodo ORDefinir aciertoen Script Canvas.
  6. Haga lo siguiente para agregar etiquetas:

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

    2. En Math (Matemáticas), CRC32, arrastre Create CRC32 (Crear CRC32) desde la Node Palette (Paleta de nodos) al gráfico. El sistema de etiquetas usa CRC32 para almacenar nombres de etiquetas.

    3. En Set hit (Establecer acierto), arrastre el pin Out (Salida) para conectarlo al pin In (Dentro) del nodo Create CRC32 (Crear CRC32).

    4. En el nodo Create CRC32 (Crear CRC32), para String (Cadena), escriba Target.

      
                                    Connect aDefinir aciertoNodo ORCreate CRC32nodo en Script Canvas.
    5. En Node Palette (Paleta de nodos), escriba tag en el cuadro de búsqueda.

    6. En Gameplay (Juego), Tag (Etiqueta), arrastre Has Tag (Tiene etiqueta) desde Node Palette (Paleta de nodos) hasta el gráfico.

      
                                    Has tagnodo en Script Canvas.
    7. En Create CRC32 (Crear CRC32), arrastre el pin CRC32 para conectarlo con el pin Tag (Etiqueta) del nodo Has Tag (Tiene etiqueta).

  7. Haga lo siguiente para agregar un nodo Get hit (Obtener acierto):

    1. En Variable Manager (Administrador de variables), haga clic con el botón derecho en la variable hit (acierto) y elija Get hit (Obtener acierto).

    2. DesdeRecibe acierto, arrastre elEntidad: EntityIDpara conectarlo alFuentede laHas tagNodo. Esto permite que el nodo Has Tag (Tiene etiqueta) compruebe la entidad con la que ha colisionado el proyectil, en lugar de la suya propia.

    3. En Create CRC32 (Crear CRC32), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Get hit (Obtener acierto).

    4. En Get hit (Obtener acierto), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Has Tag (Tiene etiqueta).

      
                                    Connect aRecibe aciertoa la variableHas tagEn Script Canvas.
  8. Haga lo siguiente para agregar el nodo If (Si):

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

    2. En Logic (Lógica), arrastre If (Si) desde Node Palette (Paleta de nodos) al gráfico.

    3. En Has Tag (Tiene etiqueta), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo If (Si).

    4. En Has Tag (Tiene etiqueta), arrastre el pin Result (Resultado) para conectarlo con el pin Condition (Condición) del nodo If (Si).

      
                                    Connect aHas tagen el nodoSiEn Script Canvas.
  9. Haga lo siguiente para agregar un nodo Destroy:

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

    2. En Entity (Entidad), Game Entity (Entidad de juego), arrastre Destroy Game Entity and Descendants (Destruir entidad de juego y descendientes) desde Node Palette (Paleta de nodos) hasta el gráfico.

      
                                    Destruir entidad de juego y descendientesnodo en Script Canvas.
    3. En If (Si), arrastre el pin True (Verdadero) para conectarlo con el pin In (Entrada) del nodo Destroy Game Entity and Descendants (Destruir entidad de juego y descendientes).

    4. DesdeRecibe acierto, arrastre elEntidad: EntityIDpara conectarlo alEntityIDEl pin de laDestruir entidad de juego y descendientesNodo.

    5. Compruebe que el gráfico projectile.scriptcanvas es similar al siguiente.

      ejemplo

      
                                        Gráfico de de ejemplo Script Canvas para la entidad de proyectil.
  10. En el navegadorScript Canvaseditor, elijaArchivo,Save (Guardar). También puede pulsar Ctrl+S.

  11. En Lumberyard Editor, pulseCtrl+GPara entrar en el modo de juego y probar el script.

  12. Para apuntar y disparar al objetivo, haga lo siguiente:

    • Para mover la esfera hacia delante, presione W.

    • Para mover la esfera hacia atrás, presione S.

    • Para mover la esfera de lado a lado, presione A y D.

    • Para generar un proyectil que se propulsa hacia delante, pulse la Spacebar (Barra espaciadora).

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