Introducción al código del juego

En este post aprenderemos cómo crear nuestro primer script. Consistirá en una esfera que se desplazará arriba y abajo cuando pulsemos la barra espaciadora. Para ello empezaremos creando la esfera en Hierarchy con Create->3D Object->Sphere. Para distinguirla la llamaremos «Ball» y aumentaremos su tamaño. También debemos eliminar/desactivar nuestro controlador de primera persona y añadir una cámara (Create->Camera) que colocaremos enfocando a nuestra esfera. Para colocar la cámara de modo que enfoque lo mismo que  se está mostrando en la vista de nuestra Scene iremos a GameObject->Align With View con nuestra cámara seleccionada.

camera

A continuación añadiremos las físicas a nuestra esfera. Para ello, con la esfera seleccionada, en Inspector le daremos a Add Component->Physics->Rigidbody (como ya hemos visto en un post anterior). Por defecto este objeto colisionará sin problema con el resto, no necesitaremos buscar y marcar la opción Convex.

Ahora vayamos con la creación de nuestro script. Primeramente por temas de organización crearemos en Project una carpeta llamada Scripts donde guardaremos nuestros Scripts. Para crear un Script iremos a la carpeta Scripts de Project y seleccionaremos Create->C# Script . Hay otras opciones pero en este tutorial trabajaremos con scripts C# Script.

C script

Llamaremos «BallScript» a nuestro script. Podremos observar el contenido del script en Inspector. Lo abriremos haciendo doble click y se lanzara la aplicación MonoDevelop, que es independiente de Unity pero que se instalará con el mismo. Esta será la aplicación en donde escribiremos el código de nuestros scripts. Habrá varias cosas de las que haremos que probablemente no se entiendan ahora mismo, pero serán explicadas en post posteriores a este. Se verán simplemente para que resulten familiares en un futuro.

monodevelop

En el código inicial leeremos algo como «public class BallScript». En donde pone BallScript será donde aparecerá el nombre de nuestro script. Dentro de «void Start()» se escribirá el código de todo aquello que se ejecutará cuando el objeto sea creado dentro del juego. En nuestro ejemplo esta parte quedará vacía, incluso podríamos borrarlo si quisiésemos. Dentro de «void Update()» se escribirá el código de todo aquello que se ejecuta en cada frame (cada una de las imágenes que se suceden en la reproducción de un juego, película, etc) , aquello que se va a ejecutar una y otra vez a lo largo del videojuego. A continuación se mostrará la imagen final de nuestro código y se explicará debajo todo lo relacionado con ella.

script code

Una variable es un contenedor que guardará información y el tipo de variable indicará qué tipo de información almacenará. En este caso la variable «public float jumpSpeed = 10;» indicará que se puede acceder a ella desde cualquier sitio, incluyendo el Inspector, («public») la variable será de tipo «float»(un número que puede ser decimal), su nombre será «jumpSpeed» (Unity tendrá en cuenta mayúsculas y minúsculas) y su valor sera 10. Esta variable nos indicará cómo de alto llegará nuestra esfera. Debemos recordar que al final de cada línea de código deberemos finalizar con punto y coma («;»).

La sentencia «if()» realizará una acción si se cumple la condición incluída entre los paréntesis o si esta es igual a verdadero («true»).

Input.GetButtonDown(«jump») devuelve true cuando pulsamos el botón que indicamos en los paréntesis (en este caso el botón asignado a «jump»). Si queremos asignar una tecla de entrada en nuestro juego vamos a Edit->Project Settings->Input y nos aparecerá en Inspector el InputManager. Entre los menús desplegables buscamos Jump y veremos que ya está asignada a la barra espaciadora.

input

GetComponent<Rigidbody>().AddForce (0, jumpSpeed, 0) indica que al componente rigidbody se le realizará lo que indica la función AddForce(). La función AddForce añadirá una fuerza cuyo vector vendrá determinado por los valores entre los paréntesis distribuidos según la forma (x,y,z) respecto a las coordenadas. De modo que en este caso la fuerza únicamente será vertical (eje y) y vendrá dada en función de la variable jumpSpeed.

En general, si escribimos «GetComponent<nombre_de_componente>().función» accederemos a ese componente y realizaremos dicha función en él.

Para añadir el script a nuestra esfera simplemente tendremos que arrastrarlo a Add Component en Inspector con nuestra esfera seleccionada. También se puede añadir haciendo click en Add Component->Scripts y seleccionando el script de nuestro proyecto que deseemos añadir al objeto. El script será un componente más de nuestro objeto. Podremos modificar la variable jumpSpeed debido a que la hemos hecho pública. Y de hecho deberemos modificarla, ya que la esfera resultará demasiado pesada para ser desplazada aplicando solo una fuerza igual a 10. Una fuerza de 500 bastará, con lo que simplemente deberemos cambiar el parámetro de 10 a 500 en Inspector. Otra opción sería disminuir la masa del objeto en Rigidbody en Mass.

jumpSpeed

Por último, si tenemos algún error en nuestro código nos aparecerá en Unity un mensaje en la esquina inferior izquierda indicándonos dicho error. Si vamos a la pestaña Console tendremos una lista de todos los avisos y errores que Unity pudo detectar. Realicemos un pequeño ejemplo eliminando uno de los «;» de nuestro código. Si hacemos esto nos saldrá un mensaje de error en Unity que nos indicará el error y dónde se encuentra este error. Haciendo doble clic en el error abrirá MonoDevelop en el punto exacto en el que detectó el fallo.

error

6 comentarios en “Introducción al código del juego

  1. En un cierto punto se ejecuta la instrucción:
    GetComponent()

    ¿Qué pasaría si nuestro objeto esfera no tuviese el componente Rigidbody?

    Me gusta

Deja un comentario