17.- Primeros scripts y eventos Update y Start

Vamos a entender los eventos básicos de Unity moviendo una caja.
Nombramos al proyecto: Script Testing

Para empezar bien asigne una carpeta especial en su disco duro: Unidad C: ó D: (en nuestro caso)
D: Unity
Seleccione la opción 3D.
Por el momento no agregamos paquetes.

Nuevo-proyecto-script-testing


Unity inicia creando una cámara y luz.

Recuerde, vamos a ordenar antes de programar.
En Assets damos Click derecho y elegimos:
Create - Folder
Asigne el nombre: My Scripts

Repita el proceso creando otras 3 carpetas:
My Scenes
My Sounds
My Sprites

organizando-el-proyecto-en-unity



Asignar el prefijo "My" antes del nombre permite que Unity ordene por alfabeto.

Resulta útil al momento de importar scripts y escenas de otros autores que pueden confundir nuestro orden.

ordenando-carpetas

VisualStudio:
Para compilar nuestros scripts utilizaremos VisualStudio Community, es un editor poderoso , tiene ventajas por su licencia gratuita y facilidad de instalación.

Cabe mencionar que también tiene algunos errores que aprenderemos a resolver.
Iniciamos...
En su carpeta My Scripts damos Click derecho y elegimos:
Create – C#
Le asignamos el nombre: PositionizeObject
Unity le asigna su extensión .cs

Creando-el-primer-script-en-Unity


Damos doble Click en el script... se debe abrir el compilador.

Si no abre el compilador es posible que no esté instalado VisualStudio, debe ejecutar de nuevo el Download Assistant y descargar Visual Studio Community.

En el menú principal Edit-Preferenses aparece el panel de configuración, la opción external tolos debe configurarse para VisualStudio.

Eligiendo-Visualstudio-para-Unity


Para iniciar damos click en el script y se abre el editor.
Unity escribe un código por defecto, aparecen las funciones básicas en Unity que son disparadas por eventos.
La función Start se ejecuta cada vez que inicia la simulación en Unity.
* Es común usar la funcion Start para preparar los parámetros de un juego,
por ejemplo la posición del jugador, preparar marcadores, etc.
En caso de la función Update es llamada dependiendo los FPS del juego, es decir, si el juego corre a 60 FPS, la función será ejecutada 60 veces por segundo.

Eventos-Start-y-Update-en-Unity


El viejo estilo de lenguaje C...
Antes de iniciar, como viejo programador de los 90's vamos adoptar el estilo elegante y ordenado de C, "NO deje los corchetes como los prepara Unity (estilo Java)".

Desde los inicios de C los corchetes "{ }" son los contenedores de la lógica, es importante acomodarlos con indentado, todo ordenado, con ésto lograremos mejorar la lógica y búsqueda de bugs.

Acomode sus corchetes ordenado, uno sobre el otro alineados.

acomodando-el-codigo-estilo-C


Ahora puede borrar todo el evento Update, no ocupamos que ésta acción se ejecute varias veces por segundo, sólo una vez, al iniciar la simulación.

En el evento Start escriba el siguiente código:

transform.position = new Vector3(1, 1, 1);

Debe ser exáctamente igual, cualquier letra diferente en la sintaxis provoca error, recuerde, el compilador sólo traduce el lenguaje humano a los binarios de la máquina.

Script-para-posicionar-objeto-en-Unity


Con el script sin errores debe verse en el proyecto de Unity sin errores, la pantalla de Consola debe estar vacía, a veces Visual Studio no marca los errores, pero Unity si los muestra.

Tenemos nuestro primer script listo, ahora vamos a asignarlo a un objeto:

Script-compilado

En el menú GameObject creamos un Terreno...

Sólo nos va a servir de referencia, por esta ocasión no vamos a crear montañas.

Agregando-primer-script-a-objeto-en-Unity


Con el terreno en escena agregamos un cubo:
Desde el menú GameObject - 3D Object - Cube
Ambos objetos deben estar en la coordenada 0,0,0

Primera-simulacion-en-Unity


La escena luce de ésta forma, nuestro cubo posicionado en la esquina del terreno, casi estamos listos para darle vida gracias al código en Unity.
Una forma sencilla de entender la lógica de los GameObjects es...
"El script es el cerebro de mi objeto".


Arrastramos el script desde la carpeta My scripts hasta nuestro cubo.

Agregando-un-cerebro-al-cubo-en-Unity


Ahora el Cubo tiene cerebro. Presione Play y el cubo debe moverse a la posición 1,1,1

Así es, ya estamos programando. El código sólo se ejecutó una vez por tratarse del evento Start()
Ahora probaremos algo con el evento Update()...


script-para-mover-objeto-en-Unity



Creamos un nuevo script: MoveObject.cs y escribimos el siguiente código:
* borre las líneas que no ocupe.

transform.Translate permite mover la transformada (posición) en cualquier dirección X,Y,Z.

Cuidado: Debe poner el código exacto, respetando mayúsculas y minúsculas.

Move-Object-Unity



Arrastre el script compilado y sin errores al objeto. Observe como se mueve gracias al evento Update().

Recuerde, éste evento se ejecuta en cada frame, si su PC permite 60,80, 100 fps, el Update() tiene el mismo número de lecturas.
Al ejecutar observe como se mueve el cubo en dirección X positivo

Ejemplos:
transform.Translate(0,1,0); // hacia arriba en Y
transform.Translate(0,0,1; // hacia el fondo en Z
transform.Translate(1,1,0); // en diagonal arriba y X positivo

Moviendose-en-Unity.png%C3%A7



Creamos un nuevo script con en nombre RotateObject.cs Escribimos el siguiente código...

script-rotate-object-unity



Arrastre el script a su cubo...

En el panel Inspector desactive los otros scripts: (quitar palomita)

probando-script-rotate-object-unity



Al ejecutar observe como gira el cubo como "trompo".

Puede experimentar con otras velocidades... (compile despues de modificar el script).

transform.Rotate(0,0.1f,0); // 10 veces más lento, la f significa dato flotante (con décimal) transform.Rotate(100,0,0); // rápido en el eje X transform.Rotate(0.01f,0.03f,0.02f); // lento en todos los ejes

Siguiente:
18.- Parenting con particulas y consola
Tutoriales Tecno Trainer Unity-C#-3dsmax

rotate-object-unity