martes, 10 de febrero de 2015

Crea un videojuego con Unity3d (ProgramaciónIV, Empieza la implementación)

Como pasan las semanas de rápido...la leche...

Pues nada! hoy otra vez me pilla el toro... y casi no tengo nada preparado, pero bueno, intentaremos seguir con el plan y tirar para adelante nuestro juego.

He estado visitando otros bloggers y youtubers y no he visto demasiados que expliquen las funciones como se hace en este blog, dado que explico para que sirve y como se debe interpretar la función que estamos escribiendo, mientras que en otros sitios os la dan sin más y tenéis que interpretar vosotros lo que pasa.
No es que critique a los demás blogs si no que es la explicación de por que esta "saga" de artículos de Cómo hacer un videojuego con unity3d que empezó con este artículo: aquí en Junio del año pasado, está yendo tan lenta.

Si quiero que podáis hacer un juego luego vosotros, por muy básico que sean los conocimientos, de esta forma podréis indagar un poco más sobre lo que os interese.


Dicho esto! pongámonos al lio!

Bueno, primero de todo iremos al proyecto donde tengamos el escenario que hicimos, si buscas hacer algo sencillo aquí tienes el artículo de modelado en 3ds max.

Para empezar pondremos una luz direccional en escena y le daremos la propiedad de sombras.
Acto seguido añadiremos una script de prueba para ver si la animación se realiza cuando nosotros queremos.


Pero antes de tocar la script tenemos que hacer unos retoques: 
<-- En este caso lo que hacemos es seleccionar el prefab de la diana e ir al apartado Rigg lo cambiamos por legacy ya que nos irá bastante mejor para lo que queremos hacer.
Más adelante veremos los otros apartados.

A continuación añadiremos un Collider en  la diana, justo donde queremos que impacten las balas.
Si queremos que sea más sencillo lo haremos más grande o más pequeño para complicar el asunto. (eso podrían ser varios niveles).-------->

Hecho esto, ¡A PICAR CÓDIGO! :




Como vi que fue sencillo explicarlo por colores, lo volveré hacer de esta forma:

En esta script solo haremos la prueba de que la animación se ejecute cuando nosotros (manualmente) activemos el booleano.

Para la definición de variables, funciones y explicación de que es un bool, float, int etc tenéis estos artículos: 

Primeros pasos para programar orientado a objetos. Aquí
Movimientos Aquí
Colliders y Collisions Aquí

Os recomiendo que si no sabéis que es algún tipo de variables de este código os paséis por esos artículos antes, yo os espero en estas lineas sin moverme.

Si no lo necesitáis o ya habéis vuelto ¡¡¡Sigamos!!!

Cómo veis (recuadro Rojo) he declarado unas variables, que cómo hicimos en los dos artículos anteriores sirven para activar algo (bool)  y hacer un crono (float) .

Una vez declaradas esas variables, lo que hacemos es inicializarlas,  ¿Cómo? pues en la función Start() (recuadro Amarillo) donde decimos que el valor para resetear el crono es el valor que tiene dicha variable, así si cambiamos ese valor en algún momento, pues se cambiará en las dos variables.

Cuando hemos acabado con la función Start(), seguiremos con lo que queramos que pase en la Update() (recuadro Verde).
Antes de la condición ponemos que el valor del componente de animación sea igual al del disparo, así nos aseguramos que si uno es false el otro también lo sea y no pueda lanzar la animación a destiempo.

Aquí es donde ocurre todo, le estamos diciendo al código la condición: si el booleano se vuelve "true": 
if (disparo){


Y ahora viene lo nuevo usamos el GetComponent<Animation>() eso es para acceder desde el código al componente del objeto en el inspector, así que el objeto que le pongamos esa script debe tener dicho componente si no dará problemas (Null References).
Cuando le decimos "si está activo el bool disparo, entonces:
- haz play a la animación
- activa el timer y cuando llegue a 0 
       -Para la animación
       - Resetea el timer al valor que tenía.
      -Pon disparo a false para parar la condición.
Así pues cada vez que le demos al booleano activaremos la animación de disparo.

Cerramos } como siempre para cada uno abierto.

Eso es todo por esta semana, la siguiente veremos cómo hacer el disparo y si da tiempo poner el crono.

Nos "vemos"!! 
Buena semana! 






No hay comentarios:

Publicar un comentario