En este ejercicio veremos lo que se puede hacer a nivel de programación básica dentro de nuestro Unity. Lo primero de todo vamos a importar a nuestra carpeta de assets las texturas que vamos a utilizar a lo largo de nuestra escena.
Añadimos dentro un GameObject > 3D Object > Cube
Reescalamos el objeto cubo con la tecla R hasta quedar tal y como se ve en la imagen:
Añadimos la textura carretera al objeto Cube, arrastrando desde la pestaña Assets
Duplicamos el cubo que hace de carretera con el comando Ctrl+D y con la tecla W trasladamos hacía la derecha para despues desde la pestaña inspector elegimos rotar 90 grados y la dejamos anexa a la carretera
Duplicamos el cubo que está a 90 grados con respecto a la carretera:
Seleccionamos ambos objetos con la tecla Shift y posteriormente variamos su escala a ambos:
Texturizamos ambas paredes con la imagen Muro
Ahora vamos a trabajar con el que será nuestro vehiculo programado, una capsula. Añadimos dentro un GameObject > 3D Object > Capsule
Lo colocamos en uno de los extremos de la carretera y se deja con los siguientes valores:
Seguidamente añadimos la textura metal a nuestra capsula arrastrando el componente desde la pestaña de Assets hasta el objeto capsula en la escena
Creamos un script dentro de la pestaña de Recursos. Clic botón derecho>Create>C#Script
A continuación damos doble clic en el archivo y se nos abre el editor de codigo que viene por defecto en el Unity, el Visual Studio 2017. Si queremos instalar otro editor de codigo debemos ir al menú Edit > Preference > Unity Preferences > External Tools > Browse
Una vez abierto se nos muestra la siguiente programación:
Dentro del Script se nos muestran las dos funciones básicas de nuestro programa:
1. Start
2. Update
A continuación vamos a entender qué significan las partes que componen un script porque así estaremos preparados para crear los comportamientos que queramos que nuestros objetos tengan. Primero, arriba tenemos esas frases que comienzan por using. Esta palabra nos permite acceder a lo que se llama namespaces.
Un namespaces es simplemente una colección de clases a las que se hace referencia utilizando un prefijo seleccionado en el nombre de la clase.
A nosotros nos importa esto para comprender lo siguiente:
Nuestro script ScriptPrueb está heredando de MonoBehaviour (ello se observa mediante ScriptPrueb : MonoBehaviour, los : significan que lo primero hereda, es hijo de, lo segundo).
Es decir, nosotros somos ScriptPrueb y estamos haciendo uso de cosas que pertenecen a MonoBehaviour, que sería el equivalente a nuestro padre o madre.
En la vida real haríamos uso de la casa, y en el script hacemos uso de unas funciones ya presentes como son Start() y Update().
Para probar lo anterior comentemos la línea que pone UnityEngine, los comentarios se realizan con // y señalan que esa línea no va a ser ejecutada, es decir, el programa la va a ignorar.
Luego hay que tener en cuenta que ya de forma predefinida se nos dan dos métodos (también llamados funciones). Start(), se ejecuta cuando se crea el objeto:
Start es una función que es llamada al inicio de la escena cuando esta se haya cargado (después). Solo ejecuta una sola vez que es cuando clicamos en el play del inicio del programa
Update es una función que se llama cada fotograma por segundo (frame), es aconsejable usarla en los siguientes casos:
A.Para manejar el movimiento de objetos **SIN** físicas.
B.Como un contador simple, si tenemos 30 *frames*por segundo sabemos que esa funcion se llamara 30 veces en un segundo.
C.Para recibir eventos de entrada (*Inputs*), como detección de teclas, de clicks, etc.
Vamos a inicializar en ambas funciones para que veamos como funcionan. La primera orden que vamos a escribir será la siguiente. Vamos a hacer que cuando inciemos el programa haga que la capsula avance en por la carretera en el eje de las x 5 pixeles:
Una vez guardada esta acción nos vendremos a la escena y probaremos el funcionamiento de nuestro script en la capsula. Por lo que arrastramos el script hasta la capsula para que así funcione nuestro elemento.
Colocamos la cámara a cierra altura para que podamos ver el efecto de la forma mas clara posible
Ahora probaremos a hacer lo mismo en la función Update por lo que cortamos y pegamos la información del transform en la siguiente línea:
Guardamos nuestro proyecto y ejecutamos nuestro script en el game editor. Veremos que la capsula se mueve indifinidamente por el plano