Вы находитесь на странице: 1из 7

Tutorial de Unity 3D Tema 2 Introduccin a los scripts de Unity3D

Introduccin a los scripts Unity3D 1. Objetivos Los scripts son una parte esencial de Unity3D ya que definen los comportamientos de tu videojuego. En este tutorial introduciremos los conceptos bsicos de creacin de scripts con el lenguaje Javascript. No son necesarios conocimientos previos de Javascript para seguirlo. Adems de Javascript, C# y Boo son otros lenguajes con los que poder crear scripts en Unity3D. En este tutorial tambin introduciremos los elementos clave de la API (Application Program Interface). La API es bsicamente cdigo que ha sido previamente escrito para ti de forma que puedas centrarte directamente en el diseo de tu videojuego acelerando el tiempo de desarrollo. 2. Prerequisitos Vamos a centrarnos en la creacin de scripts y asumimos que ya estamos suficientemente familiarizados con la GUI de Unity3D que trabajamos en el tema anterior. Para hacer el scripting ms fcil de entender, es preferible tener un editor de cdigo que soporte un resaltado de sintaxis para Javascript. Esto significa que las palabras reservadas (La sintaxis que viene de serie con Javascript) sea coloreada de forma distinta que las palabras definidas por el usuario. Un editor con estas caractersticas sera SubEthaEdit. Para facilitarte las cosas, nuevamente usaremos un guin (-) para prefijar todas las acciones que requieran tu intervencin directa con el programa. 3. Convenios de nombre Antes de empezar, vamos a mencionar varios convenios de nombrado de Unity3D: Variables: Empiezan con letra minscula. Las variables sirven para almacenar informacin sobre aspectos de algn estado del videojuego. Funciones: Empiezan con letra mayscula. Las funciones son bloques de cdigo que se escriben una sla vez y pueden ser reutilizadas tantas veces como sea necesario. Tutorial de Unity 3D Introduccin a los scripts de Unity3D Pg. 1

Tutorial de Unity 3D Tema 2 Introduccin a los scripts de Unity3D

Clases: Empiezan con letra mayscula. Son bsicamente colecciones de funciones. Siempre que leas ejemplos de cdigo de Unity3D o la propia API de Unity3D, presta especial atencin a la primera letra de cada palabra. Te ayudar a entender mejor las relaciones entre objetos. 4. Entrada de datos En nuestro primer programa vamos a permitir al usuario moverse dentro de un mundo sencillo del videojuego. 4.1 Configurando la escena Arranca Unity3D En primer lugar crearemos una superficie sobre la que pueda caminar el usuario. La superficie que vamos a usar es un cubo aplanado tal y como hicimos en el tema anterior: Crea un cubo y escala sus dimensiones x, y, z a 5,0, 0,1, 5,0, respectivamente, vers que se muestra como un gran plano. Renombra este objeto como Plano en la Vista de Jerarqua. Crea un segundo cubo y colcalo en el centro del Plano. Si no puedes ver los objetos en tu Vista de Videojuego, modifica la cmara principal para que sean visibles. Renombra este cubo como Cubo1. Deberas tambin crear una luz puntual y colocarla sobre los cubos de forma que sean ms fciles de ver. Guarda la escena haciendo clic en la pestaa File Save As y dale un nombre al videojuego. 4,2 Nuestro primer script Ya estamos listos para empezar a programar nuestro videojuego. Vamos a permitir al jugador moverse por el mundo controlando la posicin de la cmara. Para hacerlo vamos a escribir un script que leer la entrada de teclado, a continuacin asociaremos el script con la cmara principal. Empieza creando un script vaco. Haz clic en la pestaa Assets Create Javascript y renombra el script como Mover1 en el panel de la Vista de Proyecto. Haz doble clic en el script Mover1 y se abrir la funcin Update ( ) ya insertada en l, puesto que Tutorial de Unity 3D Introduccin a los scripts de Unity3D Pg. 2

Tutorial de Unity 3D Tema 2 Introduccin a los scripts de Unity3D

es el comportamiento por defecto. Vamos a insertar el cdigo dentro de esta funcin. Hay que tener en cuenta que todo el cdigo dentro de la funcin Update ( ) se ejecutar en cada frame. Para modificar la posicin de un objeto del videojuego en Unity3D necesitamos alterar la posicin en su Transform. El Transform el objeto que almacenan la posicin, rotacin y escala de un objeto, puedes encontrar ms documentacin sobre Transform aqu. La funcin Translate de Transform nos permitir hacer esto. Translate recibe 3 parmetros que son el movimiento en cada uno de los ejes x, y, z. Como queremos controlar la cmara con las teclas cursor, simplemente podemos aadir cdigo para determinar si las teclas cursor estn siendo pulsadas y ponerlas como parmetros x, z. function Update () { Transform.Translate ( Input.GetAxis ( "Horizontal" ) , 0 , Input.GetAxis ( "Vertical" ) ); } Input es una clase, y la funcin GetAxis que estamos invocando nos devuelve un valor entre -1 y 1. Por ejemplo en el caso del eje Horizontal, la tecla direccional izquierda nos devuelve -1 y la tecla direccional derecha nos devuelve 1. Observa que para invocar una funcin de un objeto utilizamos el operador punto (.). Finalmente, Transform es una clase, y la funcin Translate, como hemos dicho anteriormente, recibe 3 parmetros que indican el movimiento en cada eje. De esta manera el cdigo anterior se encarga de modificar la posicin en los ejes x, z con las teclas. No nos interesa movernos en el eje y, por eso ponemos un 0 en el parmetro correspondiente. Los ejes horizontal y vertical estn predefinidos en la configuracin de entrada (Input Settings). Los nombres y las teclas mapeadas pueden cambiarse fcilmente si accedemos a la pestaa Edit Project Settings Input. Abre el script Mover1 y escribe en l el cdigo que hemos mostrado anteriormente, presta especial atencin a las letras maysculas.

Tutorial de Unity 3D Introduccin a los scripts de Unity3D

Pg. 3

Tutorial de Unity 3D Tema 2 Introduccin a los scripts de Unity3D

4.3 Asociando el script Ahora que ya tenemos escrito nuestro primer script, Cmo podemos decirle a Unity3D cul es el objeto del videojuego que queremos que tenga ese comportamiento?. Todo lo que tenemos que hacer es asociar el script al objeto del videjuego para el que queremos ese comportamiento. Para hacerlo, en primer lugar haz clic en el objeto del videojuego al que quieras asociar el comportamiento definido en el script. En nuestro caso, sera la cmara principal, puede seleccionarla bien sea en la Vista de Jerarqua o en la Vista de Escena. A continuacin haz clic en la pestaa Componentes Scripts Mover1. Esto asocia el script a la cmara, observa que el componente Mover1 ahora tambin aparece en la Vista de Inspector de la cmara principal. Tambin es posible asignar un script a un objeto simplemente arrastrando el script desde la Vista de Proyecto hasta el objeto en la Vista de Escena. Ejecuta el videojuego (Pulsa el botn Play), deberas ser capaz de mover la cmara utilizando las teclas direccionales o bien las teclas A,S,D y W. Seguramente notars que la cmara se mueve demasiado rpido, vamos a ver una manera ms eficaz de controlar la velocidad de la cmara. 4.4 Delta Time (Tiempo Delta) Como el cdigo anterior estaba dentro de la funcin Update ( ), la cmara se estaba moviendo a la velocidad medida en metros por cada frame. Sin embargo es mejor asegurarse de que los objetos de tu videojuego se mueven a una tasa ms intuitiva como metros por segundo. Para conseguirlo, vamos a multiplicar el valor que nos retorna la funcin Input.GetAxis ( ) por Time.DeltaTime y tambin por la velocidad de movimiento que queremos en metros por segundo segn el siguiente cdigo:

Tutorial de Unity 3D Introduccin a los scripts de Unity3D

Pg. 4

Tutorial de Unity 3D Tema 2 Introduccin a los scripts de Unity3D

var speed = 5.0; function Update () { var x = Input.GetAxis("Horizontal") * Time.deltaTime * speed; var z = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.Translate(x, 0, z); } Actualiza el cdigo de el script Mover1 con el cdigo anterior.

Observa que la variable speed ha sido declarada fuera de la funcin Update ( ), esto se denomina variable expuesta, ya que la variable aparecer en la Vista de Inspector para cualquier objeto al que est asociado el script, es decir, estar expuesta en la interfaz de Unity. Este tipo de variables son tiles cuando su valor va a necesitar ser modificado varias veces hasta ajustarlo para conseguir el efecto deseado, es mucho ms fcil poder hacerlo desde la interfaz que desde el cdigo. 5, Conectando variables Conectar variables a travs de la GUI es una caracterstica muy potente de Unity. Permite que las variables que normalmente deberan ser asignadas mediante cdigo lo hagan mediante arrastrar y soltar desde la GUI. De esta manera podemos prototipar ideas de forma fcil y rpida. Como las variables se conectan a travs de la GUI, debemos tener siempre en cuenta que necesitaremos exponerlas en nuestro script para luego poder asignarlas en la Vista de Inspector. Vamos a demostrar el concepto de conexin de variables creando una luz puntual que seguir a nuestro personaje principal (Cmara principal) mientras se mueve. Aade una Spot Light (Luz puntual) a tu videojuego, muvela si es necesario hasta que quede cerca de otros objetos. Crea un nuevo Javascript y renmbralo a Seguir.

Tutorial de Unity 3D Introduccin a los scripts de Unity3D

Pg. 5

Tutorial de Unity 3D Tema 2 Introduccin a los scripts de Unity3D

Vamos a pensar lo que vamos a hacer. Queremos que nuestra luz puntual ilumine all donde apunte nuestra cmara principal. Por supuesto, ya hay una funcin construida en Unity que hace esto, se trata de transform.LookAt ( ). Si ests empezando a preguntarte Cmo hago esto? y ya estabas pensando en escribir gran cantidad de cdigo, debes tener en cuenta que siempre es mejor echar un vistazo a la API de Unity y buscar una funcin que ya exista. Tambin sera una buena idea hacer una visita a la seccin transform de la API siempre que pensemos en algo referente a modificar la posicin o rotacin de un objeto del videojuego. Ahora vamos a la seccin de conexin de variables: Qu deberamos usar como parmetro para LookAt ( )? Podramos simplemente escribir el cdigo de un objeto del videojuego, sin embargo vamos a asignar la variable directamente desde la GUI, usaremos una variable expuesta de tipo Transform. Nuestro script Seguir.js debera quedar as: var target : Transform; function Update () { transform.LookAt(target); } Asocia este script a la Spot Light y observa como la variable target queda expuesta. Con la Spot Light seleccionada, arrastra la cmara principal desde la Vista de Jerarqua hasta la variable target en la Vista de Inspector. Esto asignar el valor de la variable target, esto har que la Spot Light ahora siga la posicin de la cmara principal. Si quisiramos que siguiese a cualquier otro objeto del videojuego simplemente lo arrastraramos sobre la variable de la misma manera, siempre y cuando sea de tipo Transform, que es en la mayora de los casos. Dale al botn jugar. Si miras la Vista de Escena deberas ver la Spot Light siguiendo la cmara principal por el escenario. Puedes modificar la posicin de la Spot Light para mejorar el efecto. 6, Accediendo a componentes Los objetos del videojuego pueden tener una gran cantidad de scripts y otros componentes asociados. A menudo es necesario acceder a funciones y variables de otros componentes. Unity permite esto a travs de la funcin GetComponent ( ). Tutorial de Unity 3D Introduccin a los scripts de Unity3D Pg. 6

Tutorial de Unity 3D Tema 2 Introduccin a los scripts de Unity3D

Ahora vamos a aadir otro script a nuestra Spot Light que har que mire al Cubo1 cuando pulsemos la tecla Espacio (Por defecto tecla para saltar). Primero vamos a pensar qu es lo que vamos a hacer: 1. Detectar cuando se pulsa el botn Espacio. 2. Cuando haya sido pulsado, hacer que la Spot Light mire al Cubo1. Cmo lo haremos? El siguiente script contiene una variable target cuyo valor determina a cul de los objetos del videojuego debe mirar. Simplemente necesitamos cambiar el valor de ese parmetro. Podramos escribir el cdigo correspondiente para hacer que fuese el cubo (Veremos cmo hacerlo ms adelante), sin embargo sabemos podemos hacerlo mejor exponiendo la variable y asignndola a travs de la GUI. Crea un nuevo Javascript y llmalo Interruptor. Aade en l el siguiente cdigo:

Tutorial de Unity 3D Introduccin a los scripts de Unity3D

Pg. 7

Вам также может понравиться