viernes, 16 de enero de 2015

Crea un videojuego con Unity3d (ProgramaciónII)

Y  así seguimos unas semanas más tarde, pero al menos seguimos adelante con el proyecto...

Hoy tocaremos el movimiento en los objetos y montaremos en escena la primera parte de los Triggers y los Colliders que son componentes que podemos añadir a los objetos. 

Empezaremos por el principio, haremos un cubo, y una script para que este se mueva:

La única diferencia inicial entre Trigger y Collider es que si activamos la casilla "Is Trigger" nuestros objetos, jugador, o cualquier cosa, podrá traspasar la zona verde, obviamente la podemos manipular, escalar, rotar, etc.
Abriremos el menú Tag y Ad Tag, a continuación crearemos uno con el nombre "Obstaculo" y se lo aplicaremos al cubo pequeño con el Trigger, en mi caso he hecho un objeto a parte que solo sea el trigger y es a quien se lo aplico.
Vamos al código: 


Bien, como podemos observar, lo primero que he creado es una variable de tipo float: en el  artículo anterior de esta sección vemos que tipo de variable es y otro de sus usos.

En este caso lo usaremos para determinar la velocidad con la que se va a mover nuestro cubo, al cual le hemos añadido la script y puesto la cámara en la posición correcta, como si de una tercera persona se tratara.

Como vemos, he creado la variable de tipo Transform, llamada _transform, y luego en el Start le digo que _transform = transform; eso lo que hace es que guardará el valor en la variable que nosotros creamos sin tener que modificar todo el rato el propio transform del objeto, así por encima, es una buena opción siempre que usemos tipos de variable como estas, hacer esto al principio.

En el Update, podemos ver las lineas del código que harán que nuestro cubo se mueva si apretamos la W o la S.
La primera linea es el condicional tratado también en el artículo anterior, y dice "si pulsas la tecla W" entonces...
Para entenderlo un poco mejor: 
Input.GetKey se interpreta como "cuando la tecla es pulsada", si lo escribimos en otra función que no se llama en el Update tendríamos problemas, al menos con el nivel que se ha explicado hasta ahora.
La sintaxis sigue con (KeyCode.___) cuando ponemos KeyCode y seguimos con un punto, será la forma de decirle al código, cual es la tecla que deberemos pulsar, si escribís el punto, veréis como aparecen las teclas del teclado.

Acto seguido, en la ejecución si presionamos la tecla que decimos, el código entra dentro de la condición y hará lo siguiente:
_transform.Translate, eso significa que va a aumentar o reducir el VECTOR3 del inspector que da la posición.
Entonces, por sintaxis sigue con, cómo tiene que modificar esas tres cifras, así que ponemos:
(speed*Time.deltaTime,0,0), así que moverá por X el valor de la variable y la multipilicamos por Time.deltaTime, como hicimos en el anterior artículo, y cómo no queremos que se mueva ni por Y ni Z pues ponemos el valor 0, 0.

Le añadimos la script al cubo y la probamos. Si está bien escrito deberíamos poder presionar W y S y avanzar y retroceder (no gira) solo en linea recta.

La semana que viene seguiremos con los Triggers y colliders, para no seguir demasiado con el código, por hoy.



No hay comentarios:

Publicar un comentario