viernes, 24 de abril de 2015

Suavizado de cámara


El siguiente paso en la carrera de la integración de todos los elementos en el juego en Unity 5 era la cámara. He hablado ya mucho de la cámara y le he dado muchas vueltas, ahora toca la integración y alguna mejora.


Una vez integrado el sistema de la cámara con todo lo que había hecho hasta ahora solo falta poner una ruta y probar si la cámara se mueve correctamente por el rail siguiendo al personaje. Y tengo un primer problema. En este nuevo proyecto la escala es bastante pequeña, así que el hueco que dejo entre la posición del personaje y la de la cámara era tan grande que se me acababa el trozo de escenario que tengo antes de que la cámara comenzase a moverse. Así que tendría que bajar esa distancia. Puedo caer en un problema de precisión por usar una escala más pequeña, pero por ahora funciona. La otra opción era reescalar todo lo que tenía, modelos, escenarios, potencias, efectos de partículas, es mucho trabajo.


También he cambiado el movimiento de la cámara para que no sea directo. Hasta ahora al moverse el personaje se triangulaba su posición respecto a la ruta de la cámara y se mueve la cámara al sitio donde debería. Ahora en lugar de mover la cámara directamente se mueve el punto de objetivo de la cámara y se va interpolando la posición de la cámara para que se acerque suavemente al punto objetivo.

He puesto un parámetro para ajustar el suavizado del acercamiento de la cámara al punto deseado. Y he estado jugando con ese parámetro y el de distancia de acercamiento de la cámara al personaje. Si la cámara se adapta lentamente el jugador quedará muy lejos cuando corra. Y si corre hacia la cámara incluso podría salir de plano. Si se pone más rápido esa distancia es menor, pero hay que tener cuidado que al pararse el personaje y llegar la cámara a destino el personaje no quede cortado en el plano.

Al final y aprovechando el suavizado pude poner una cosa que tenía ganas: la distancia de cámara dependiente de la dirección del personaje. Es algo que me di cuenta hacían en el Crash Bandicoot y que tiene mucho sentido. Es tan fácil como alejar la cámara si se anda hacia la cámara y ponerla más cerca si se anda hacia el fondo. Hice la comprobación con el producto escalar de los vectores forward de cámara y personaje, y dependiendo del signo se si el personaje anda hacia el fondo o hacia cámara y pongo una distancia de cámara u otra, y el suavizado de cámara se encarga de que esa transición sea más o menos suave.


Cámara con suavizado

El resultado final es una cámara más suave, y que nos da algo de aire si andamos hacia atrás para que veamos hacia donde vamos, pero sigue de bastante cerca al personaje si vamos hacia delante para poder ver la acción bien, no demasiado pequeño.

No hay comentarios :

Publicar un comentario