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: Crear una entidad controlable
Open 3D Engine (O3DE), el sucesor de Lumberyard, ya está disponible en Developer Preview. Descargar O3DE |
En este tutorial se muestran los pasos para crear una esfera sencilla que puede controlar a través del teclado.
ejemplo

Además de los aspectos básicos de los nodos, la entrada, el movimiento y el inicio de sesión, aprenderá los siguientes conceptos clave:
-
Adición de nodos
-
Creación de conexiones de datos y ejecución
-
Adición de nodos de evento
-
Adición de nodos de acción
Prerequisites
-
Establezca Proyecto de ejemplos como su proyecto predeterminado. Para obtener más información, consulte Elección de un proyecto de juego para abrir.
-
Si a Node Palette (Paleta de nodos) le faltan nodos, puede actualizar las preferencias para mostrar los nodos ocultos. Para obtener más información, consulte Referencia de nodos Script Canvas.
-
Para obtener acceso a los nodos de diagnóstico, incluido el nodo Print (Imprimir), debe habilitar la gema Script Canvas Diagnostic Library y luego volver a compilar el proyecto del juego. Para obtener más información, consulte Habilitación de gemas.
Temas
- Paso 1: Crear un nivel
- Paso 2: Creación de una entidad y agregar componentes para crear una entidad controlable
- Paso 3: Creación de un script de entrada con Script Canvas
- Paso 4: Asignar el script a la entidad y probar el script
- Paso 5: Creación de un script para mover la esfera
- Paso 6: Añadir movimiento en el eje X para la esfera
Paso 1: Crear un nivel
Antes de crear una esfera que pueda controlar con entradas de teclado, tendrá que crear un nivel.
Para crear un nivel
-
En Lumberyard Editor, elijaArchivo,Nuevo.
-
En el cuadro de diálogo New Level (Nuevo nivel), escriba
firstscriptcanvas
y después haga clic en OK (Aceptar). -
En el cuadro de diálogo Generate Terrain Texture (Generar textura de terreno), elija 512x512 y después haga clic en OK (Aceptar).
Paso 2: Creación de una entidad y agregar componentes para crear una entidad controlable
Para crear una esfera que pueda controlar con entradas de teclado, debe crear una entidad y añadir los componentes Mesh, Rigid Body, Mesh Collider e Input. También puede crear una asignación de entradas que convierta las entradas del teclado en movimientos WASD en las direcciones X e Y.
Para crear una entidad controlable
-
En Lumberyard Editor, haga clic con el botón derecho en laPerspectivaventanilla y seleccioneCreate entity.
-
En el navegadorEntity Inspector, realice una de las siguientes opciones:
-
En Name (Nombre), ingrese
Player
. -
Haga clic en Add Component (Añadir componente) y después haga clic en el componente Mesh.
-
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\
y luego haga clic en el botón OK (Aceptar).primitive_sphere.cgf
-
-
En la ventanilla, utilice la herramienta Move (Mover) para seleccionar el eje Z y mover la entidad del suelo.
-
En el navegadorEntity Inspector, haga clic enAdd Componenty luego añada los siguientes componentes:
-
Rigid Body Physics
-
Mesh Collider.
-
Entrada
-
-
En el componente Input, haga clic en el icono Input Bindings Editor (Editor de enlaces de entrada)
. Esto abre el Asset Editor (Editor de recursos).
-
En Asset Editor, elija File (Archivo), New (Nuevo), Input Bindings (Enlaces de entrada) y para File name (Nombre de archivo), escriba
player
y, a continuación, haga clic en Save (Guardar). -
En la ventana Edit Asset (Editar recurso), haga lo siguiente:
-
En Input Event Groups (Grupos de eventos de entrada), haga clic en + para agregar un nuevo grupo de eventos de entrada.
-
Expanda el grupo de eventos de entrada. Para Event name (Nombre de evento), escriba
move_x
. -
En Event Generators (Generadores de eventos), haga clic en + para agregar un generador de eventos.
-
En el cuadro de diálogo Class to create (Clase que debe crearse), haga clic en OK (Aceptar) para agregar una clase de entrada.
-
Expanda move_x, Event Generators (Generadores de eventos) y gamepad_button_a. En Input Device Type (Tipo de dispositivo de entrada), seleccione keyboard (teclado).
-
En Input Name (Nombre de entrada), seleccione keyboard_key_alphanumeric_A (tecla_alfanumérica_teclado_A).
-
En Event value multiplier (Multiplicador de valor de eventos), escriba
-1
. -
Repita los pasos C — E. ParaNombre de entrada, seleccionekeyboard_key_alphanumérico_D. En Event value multiplier (Multiplicador de valor de eventos), use el valor predeterminado de
1
. -
Expanda el generador de eventos keyboard_key_alphanumeric_A (tecla_alfanumérica_teclado_A) y compruebe que la configuración aparece como en la imagen siguiente:
-
-
En la ventana Edit Asset (Editar recurso), haga lo siguiente:
-
En Input Event Groups (Grupos de eventos de entrada), haga clic en + para agregar un nuevo grupo de eventos de entrada.
-
Expanda el grupo de eventos de entrada. Para Event name (Nombre de evento), escriba
move_y
. -
En Event Generators (Generadores de eventos), haga clic en + para agregar un generador de eventos.
-
En el cuadro de diálogo Class to create (Clase que debe crearse), haga clic en OK (Aceptar) para agregar una clase de entrada.
-
Expanda move_y, Event Generators (Generadores de eventos), gamepad_button_a (botón_gamepad_a). En Input Device Type (Tipo de dispositivo de entrada), seleccione keyboard (teclado).
-
En Input Name (Nombre de entrada), seleccione keyboard_key_alphanumeric_W (tecla_alfanumérica_teclado_W). En Event value multiplier (Multiplicador de valor de eventos), use el valor predeterminado de
1
. -
Repita los pasos C — E. ParaNombre de entrada, seleccionekeyboard_key_alphanumérico_s. En Event value multiplier (Multiplicador de valor de eventos), escriba
-1
. -
Expanda keyboard_key_alphanumeric_W (tecla_alfanumérica_teclado_W) y compruebe que la configuración aparece como en la imagen siguiente.
-
Elija File (Archivo), Save (Guardar).
-
-
En el componente Input, haga clic en el botón de navegador (...), seleccione el archivo
player.inputbindings
y haga clic en OK (Aceptar).
Paso 3: Creación de un script de entrada con Script Canvas
Ahora que ha creado una esfera con física y asignación de entrada, puede crear el primer script con elScript CanvasEditor de .
Para crear un script de entrada
-
En Lumberyard Editor, elijaHerramientas de,Script Canvas.
-
En el navegadorScript Canvaseditor, eligeArchivo,Nuevo guión.
-
Una vez que se cargue el gráfico, elija File (Archivo) y Save As (Guardar como).
-
En el cuadro de diálogo Save As (Guardar como), en File name (Nombre de archivo), escriba
player
y después haga clic en Save (Guardar). -
En Node Palette (Paleta de nodos), escriba
input
en el cuadro de búsqueda.nota También puede obtener acceso a la lista de nodos haciendo clic con el botón derecho en un área vacía del gráfico.
-
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 un evento, el nodo de evento envía un mensaje al gráfico.
-
Para Event name (Nombre de evento), escriba
move_y
. Esto indica al nodo que escuche el evento de entrada. -
En Node Palette (Paleta de nodos), escriba
Print
en el cuadro de búsqueda. -
En Utilities (Utilidades), Debug (Depurar), arrastre Print (Imprimir) desde Node Palette (Paleta de nodos) hasta el gráfico. Print (Imprimir) es un nodo de acción. Al ejecutar un nodo de acción, complete acciones como, por ejemplo, solicitar, establecer, manipular datos y las funciones de activación. Los nodos de acción también imprimen datos en la consola de editor, lo que permite comprobar valores a medida que se ejecuta el script.
-
En Input Handler (Controlador de entrada), arrastre el pin Held (Mantenido) para conectarlo con el pin In (Dentro) del nodo Print (Imprimir). Esta conexión indica al nodo Print (Imprimir) que se ejecute una vez que el controlador de entrada recibe un evento held.
-
En Input Handler (Controlador de entrada), arrastre el pin Value (Valor) para conectarlo con el pin Value (Valor) del nodo Print (Imprimir). Esta conexión indica al nodo Input Handler (Controlador de entrada) que pase el valor del evento de entrada del controlador de entrada al primer argumento en el nodo de Print (Imprimir).
nota -
La ejecución de nodos siempre va de izquierda a derecha de un nodo.
-
Los datos entran siempre por el lado izquierdo de un nodo y salen por la parte derecha del nodo.
Para obtener más información, consulte Entradas, salidas y tipos de conexión.
-
-
Compruebe que el archivo
player.scriptcanvas
es similar al siguiente. -
En el navegadorScript Canvaseditor, eligeArchivo,Guardaro pulseCtrl+S.
Paso 4: Asignar el script a la entidad y probar el script
El script que ha hecho ofrece el resultado del valor del evento de entrada. Ahora puede asignar el script a la entidad y probar el script
La entrada de teclado del tutorial no funciona en una sesión de escritorio remoto.
Para asignar y probar el script
-
En Lumberyard Editor, seleccione laJugadorentidad que ha creado.
-
En el navegadorEntity Inspector, haga clic enAdd Componenty luego seleccione elScript Canvascomponente.
-
UnderScript Canvas, haga clic en el botón (...), seleccione el botón
player.scriptcanvas
y, a continuación, haga clic enDE ACUERDO. -
Pulse ` para abrir la ventana de consola o elija Tools (Herramientas), Console (Consola).
-
Presione Ctrl+G para entrar en el modo de juego.
-
Para desencadenar el evento de entrada, presioneWA continuación, pulseS. LaConsolaen Lumberyard Editor muestra el valor del evento de entrada cuando el
move_y
se activa el evento. En este caso, el panel de Console (Consola) muestra1
cuando pulsa W y muestra-1
cuando pulsa S. -
Cuando haya terminado de probar el script, presione Esc.
Paso 5: Creación de un script para mover la esfera
Ahora que ha creado correctamente un script, puede añadir nodos para mover la esfera. También puede modificar el valor de eventos de entrada para controlar el movimiento.
Para mover la esfera
-
En el navegadorScript Canvaseditor, enNode Palette, introduzca
multiply
en el cuadro de búsqueda. -
En Math (Matemáticas), arrastre Multiply (Multiplicar) desde la Node Palette (Paleta de nodos) al gráfico.
-
Desde Input Handler (Controlador de entrada), arrastre el pin Held (Retenido) para conectarlo con el pin In (Entrada) del nodo Multiply (Multiplicar). Esta conexión ejecuta el nodo Multiply (Multiplicar) después de que el controlador de entrada reciba un evento held.
-
En Input Handler (Controlador de entrada), arrastre el pin Value (Valor) para conectarlo con el pin Value A (Valor A) del nodo Multiply (Multiplicar).
-
En el nodo Multiply (Multiplicar), en Value B (Valor B), escriba
0.1
. Este valor inferior para el evento de entrada limita la velocidad de movimiento. -
En Node Palette (Paleta de nodos), escriba
move
en el cuadro de búsqueda. -
En Entity (Entidad), Transform (Transformar), arrastre Move Entity (Mover entidad) desde Node Palette (Paleta de nodos) hasta el gráfico.
-
En Node Palette (Paleta de nodos), escriba
create from values
en el cuadro de búsqueda. -
En Math (Matemáticas), Vector3, arrastre Construct from Values (Constructo de valores) de Node Palette (Paleta de nodos) al gráfico. Puede utilizar este nodo para crear un vector 3 a partir de un número.
-
En Multiply (Multiplicar), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Create from Values (Crear desde valores).
-
En Multiply (Multiplicar), arrastre el pin Result (Resultado) para conectarlo con el pin Number: Y (Número: Y) del nodo Construct from Values (Constructo de valores). Solo necesita una dirección y, por lo que utilice el valor predeterminado (
0
) para X y Z. -
En Create From Values (Crear a partir de valores), arrastre el pin Out (Salida) para conectarlo con el pin In (Entrada) del nodo Move Entity (Mover entidad).
-
En Create From Values (Crear desde valores), arrastre el pin Vector 3 para conectarlo con el pin In (Entrada) del nodo Move Entity (Mover entidad).
-
Compruebe que el gráfico
player.scriptcanvas
es similar al siguiente. -
Guarde el gráfico.
-
En Lumberyard Editor, presioneCtrl+Gpara entrar en el modo de juego y probar el script.
-
Para mover la esfera hacia delante, presioneW. Para mover la esfera hacia atrás, presioneS.
-
Cuando haya terminado de probar el script, presione Esc.
Paso 6: Añadir movimiento en el eje X para la esfera
Ahora que ha convertido el valor del evento de entrada en una dirección que mueve la entidad en el eje Y, puede agregar movimiento al eje X.
Para agregar movimiento al eje X
-
En el navegadorScript Canvaseditor, arrastre el gráfico para seleccionar elControlador de entrada,Multiplicar,Crear a partir de valores, yMover entidadNodos. Aparece un perímetro naranja rodeando los nodos seleccionados.
-
Pulse Ctrl+C para copiar los nodos seleccionados.
-
Presione Ctrl+V para pegar los nodos copiados y sus conexiones. Esto le permite clonar el script existente y modificar la versión clonada con la configuración adecuada para el movimiento en el eje X.
-
Mientras está seleccionado, mueva los nodos de tal modo que no se solapen los nodos copiados.
-
En el nodo Input Handler (Controlador de entrada) duplicado, en Event Name (Nombre de evento), escriba
move_x
.ejemplo
Su gráfico
player.scriptcanvas
debería tener el siguiente aspecto. -
Para el nodo Multiply (Multiplicar) duplicado, mueva la conexión desde el pin Y al pin X en el nodo Create From Values (Crear a partir de valores) duplicado.
nota Para desconectar una conexión, arrástrela a una parte vacía del lienzo. Para eliminar una conexión, presione Alt y haga clic en ella.
-
Compruebe que el gráfico del archivo
player.scriptcanvas
es similar al siguiente.ejemplo
-
Guarde el gráfico.
-
En Lumberyard Editor, presioneCtrl+Gpara entrar en el modo de juego y probar el script.
-
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.
-
-
Cuando haya terminado de probar el script, presione Esc.