Quiero explicar los problemas que he
tenido con la cámara del juego, pero para llegar allí tengo que
pasar por un par de plugins de Unity, que además son
bastante útiles para multitud de cosas, por eso puede que me
extienda varias entradas.
El plugin principal sobre el que
descansan los demás es iTween. Es gratuito y está en la tienda de
Unity. Lo que venden son packs con ejemplos, para que cojas ese
código directamente, o aprendas el rendimiento que se le puede dar.
Aún así con la documentación básica se puede tirar bastante bien.
Básicamente iTween ofrece la
posibilidad de animar cosas de forma fácil. Y cuando digo animar
cosas no es solo mover objetos, sino animar un cambio de color, de
sonido, escalados, orientaciones, movimientos predefinidos,
recorridos por splines, cámaras...
Yo de hecho cuando lo empecé a usar me
pregunté cómo esto no venía por defecto en Unity, hace mucho más
fácil animar cosas mediante scripts. Voy a un poner un ejemplo
básico de lo más sencillo: mover un objeto a lo largo de una línea.
Imaginemos que queremos que el objeto
se empiece a mover en algún momento, y que queremos que se ejecute
algo cuando haya llegado al destino (un método cualquiera) y que
recorra la línea en 4 segundos, la línea va a ser paralela al eje z
donde se encuentre el objeto y tiene una longitud de 30 unidades. El
código más básico que podríamos encontrar en foros Unity para
hacerlo podría ser (lo doy en C#, en javascript es muy parecido):
void comenzarMovimiento(){moviendo=true;tiempoMoviendo=0;}
void Update(){if (moviendo){gameObject.transform.position += new Vector3 (0f, 0f, (Time.deltaTime/4f)*30);tiempoMoviendo+=Time.DeltaTimeif (tiempoMoviendo>=4){moviendo=false;metodoFinDeMovimiento();}}}
Aquí tendríamos el movimiento
controlado, sería un movimiento lineal, y para cambiarlo a otro tipo
habría que cambiar la forma en que se incrementa la posición en z,
también hay que tener en cuenta que tenemos un if en el update solo
para este movimiento. Pero si tuvieramos varios movimientos posibles
se empezaría a llenar el método Update de código de las distintas
posibles animaciones. Se podrían usar funciones de interpolación
como Lerp. Pero vamos, el movimiento es el mismo. Este mismo
movimiento con iTween sería:
void comenzarMovimiento(){iTween.MoveBy( gameObject, iTween.Hash("z" , 30,"time" , 4f,"oncomplete", "metodoFinDeMovimiento","easeType", iTween.EaseType.easeOutQuart));}
Apenas 6 líneas y porque no lo he
querido poner todo en una sola línea. Además con el easeType
podemos controlar de forma muy sencilla cómo queremos el movimiento,
si lineal, cuadrático, con inicio y final suavizado...
Y este es solo un ejemplo, y sin todas
las posibilidades que da esta llamada. iTween se puede utilizar para
poner la música más rápido, cambiar el color del HUD, hacer que
tiemble la cámara. De hecho haré una entrada solo de pequeños usos
que le he dado en los dos juegos.
No hay comentarios :
Publicar un comentario