Lumberyard
Guía del usuario (Version 1.20)

Script Canvas: Tutorial: Disparar a un objetivo generando entidades y detectando colisiones

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

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 Script Canvas de ejemplo 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

Requisitos previos

Paso 1: Configurar 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. En Lumberyard Editor, haga clic con el botón derecho en la ventanilla Perspective (Perspectiva) cerca de su esfera y elija Create entity (Crear entidad).

  2. En el Entity Inspector, haga lo siguiente:

    1. En Name (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.

      
                                    Propiedades de Transform para la entidad Projectile (Proyectil).
    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 Entity Inspector, haga clic en Add Component (Añadir componente) y luego elija los componentes siguientes:

    • Rigid Body Physics

    • Mesh Collider (Colisionador de mall)

    • Script Canvas

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

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

  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 componente Script Canvas, para Script Canvas Asset (Recurso de Script Canvas), haga clic en el botón de exploración (...), seleccione el archivo projectile.scriptcanvas y luego haga clic en el botón OK (Aceptar).

    
                            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 las propiedades de la entidad Projectile (Proyectil)

Paso 2: Crear 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 editor de Script Canvas, abra el archivo projectile.scriptcanvas si aún no está abierto desde Paso 1: Configurar 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. Para agregar el nodo Get World Transform (Obtener transformada de mundo), haga lo siguiente:

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

    2. En Entity (Entidad), Transform (Transformar), arrastre Get World Transform (Obtener transformada de mundo) desde Node Palette (Paleta de nodos) hasta el 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 Get World Transform (Obtener transformada de mundo).

      
                                    Conecte el nodo On Graph Start (Al inicio del gráfico) al nodo Get World Transform (Obtener transformada de mundo).
  5. Para obtener el eje Y de la transformación, haga lo siguiente:

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

    2. En Math (Matemáticas), Transform (Transformar), arrastre Get Column (Obtener columna) desde Node Palette (Paleta de nodo) hasta el gráfico.

    3. En Get World Transform (Obtener transformada de mundo), arrastre el pin Out (Salida) para conectarlo con el pin In (Dentro) del nodo Get Column (Obtener columna).

      
                                    Conecte el nodo Get World Transform (Obtener transformada de mundo) al nodo Get Column (Obtener columna).
    4. Desde Get World Transform (Obtener transformada de mundo), arrastre el pin Transform (Transformar) para conectarlo con el pin Transform (Transformar) del nodo Get Column (Obtener columna).

      
                                    Conecte el nodo Get World Transform (Obtener transformada de mundo) al nodo Get Column (Obtener columna).
    5. En el nodo Get Column (Obtener columna), en Index (Índice), escriba 1. Este nodo devuelve el eje Y de la transformación, que usará como dirección de avance para la entidad.

  6. Para establecer el tamaño del nodo de avance, haga lo siguiente:

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

    2. En Math (Matemáticas), Vector3, arrastre Multiply By Number (Multiplicar por número) de Node Palette (Paleta de nodos) al gráfico. Este nodo aumenta el tamaño del nodo de avance para la velocidad inicial del proyectil.

    3. En Get Column (Obtener columna), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Multiply By Number (Multiplicar por número).

    4. En Get Column (Obtener columna), arrastre el pin Column (Columna) para conectarlo con el pin Vector 3 del nodo Multiply By Number (Multiplicar por número).

    5. En el nodo Multiply By Number (Multiplicar por número), para Number (Número), escriba 200.

      
                                    Conecte el nodo Get Column (Obtener columna) al nodo Multiply By Number (Multiplicar por número).
  7. Para configurar la velocidad, haga lo siguiente:

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

    2. En Physics (Física), Physics Component (Componente de física), arrastre Set Velocity (Velocidad de conjunto) desde Node Palette (Paleta de nodos) hasta el gráfico.

    3. En Multiply By Number (Multiplicar por número), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Set Velocity (Velocidad de conjunto).

    4. En Multiply By Number (Multiplicar por número), arrastre el pin Vector3 para conectarlo con el pin Velocity (Velocidad) del nodo Set Velocity (Velocidad de conjunto).

      
                                    Conecte el nodo Multiply By Number (Multiplicar por número) al nodo Set Velocity (Velocidad de conjunto).
  8. 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.

      
                                    Nodo Delay (Retraso) 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.

      
                                    Conecte el nodo On Graph Start (Al inicio del gráfico) al nodo Delay (Retraso).
  9. 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.

      
                                    Utilice el nodo Destroy Game Entity and Descendents (Destruir entidad de juego y descendientes) para 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).

      
                                    Conecte el nodo Delay (Retraso) al nodo Destroy Game Entity and Descendents (Destruir entidad de juego y descendientes).
    4. Compruebe que el gráfico projectile.scriptcanvas es similar al siguiente.

      ejemplo

      
                                        Ejemplo de script para la entidad de proyectil en Script Canvas.
  10. En el editor de Script Canvas, elija File (Archivo), Save (Guardar). También puede pulsar Ctrl+S.

Paso 3: Guardar la entidad del proyectil como un 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 Entity Outliner, haga clic con el botón derecho en Projectile (Proyectil) y seleccione Create slice (Crear 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 Asset Browser, vaya al archivo projectile.slice que acaba de crear.

      
                                    Seleccione el archivo projectile.slice en Asset 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.

      
                                    Establezca el archivo projectile.slice como sector dinámico en Asset Browser.
  4. En Entity Outliner, haga clic con el botón derecho en Projectile (Proyectil) y, a continuación, haga clic en Delete (Eliminar). 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 Entity Outliner, haga clic con el botón derecho en la entidad Player (Jugador) y elija Create child entity (Crear 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 Entity Inspector, haga clic en Add Component (Añadir componente) y luego elija el componente Spawner (Generador).

  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 projectile.slice para el componente Spawner.
  6. Compruebe que la entidad spawner (generador) sea similar a la siguiente imagen.

    
                            Los componentes y las propiedades de la entidad spawner (generador)

Paso 5: Configurar el 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 el Entity Inspector, en Input (Entrada), haga clic en el icono Input Bindings Editor (Editor de enlaces de entrada) .

  2. 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, seleccione Tools (Herramientas), Script Canvas.

  2. En el editor Script Canvas, elija File (Archivo), Open (Abrir). 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.

      
                                    Nodo Input Handler (Controlador de entrada) 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.

      
                                    Nodo Once (Una vez) 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).

      
                                    Nodo Once (Una vez) 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.

      
                                    Conecte el nodo Once (Una vez) al nodo Spawn (Generar) 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.

      
                                    Nodo Delay (Retraso) 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, presione Ctrl+G para 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: Crear 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 con el botón derecho del ratón en la ventanilla Perspective (Perspectiva) cerca de su esfera y elija Create entity (Crear entidad).

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

    
                            Cree una entidad denominada Target (Objetivo).
  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 a la entidad Target (Objetivo).
  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.

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

    ejemplo

    
                                Componentes de ejemplo asociados a la entidad Target (Objetivo).

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 editor de Script Canvas, abra el archivo projectile.scriptcanvas.

  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.

      
                                    Nodo On Collision (En colisión) 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).

    
                            Conecte el nodo On Collision (En colisión) al nodo de variable Set hit (Establecer acierto) en 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.

      
                                    Conecte el nodo Set hit (Establecer acierto) al nodo Create CRC32 (Crear CRC32) 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.

      
                                    Nodo Has Tag (Tiene etiqueta) 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. En Get hit (Obtener acierto), arrastre el pin entity: EntityID (entidad: IDEntidad) para conectarlo con el pin Source (Origen) del nodo Has Tag (Tiene etiqueta). 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).

      
                                    Conecte el nodo de variable Get hit (Obtener acierto) al nodo Has Tag (Tiene etiqueta) en 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).

      
                                    Conecte el nodo Has Tag (Tiene etiqueta) al nodo If (Si) en 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.

      
                                    Nodo Destroy Game Entity and Descendants (Destruir entidad de juego y descendientes) 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. En Get hit (Obtener acierto), arrastre el pin entity: EntityID (entidad: IDEntidad) para conectarlo con el pin EntityID (IDEntidad) del nodo Destroy Game Entity and Descendants (Destruir entidad de juego y descendientes).

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

      ejemplo

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

  11. En Lumberyard Editor, presione Ctrl+G para 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.