Ya he explicado como implementé
la cámara en Unity para Temet Nosce. Una cámara sobre raíles,
montada con trozos de spline. Todo parecía muy bonito, pero el
demonio está en los detalles, y aquí hay mucho demonio. Cuando
empiezas a usarla en más escenario y salen errores, que puedes
evitar que salgan en un vídeo promocional, pues son cosas puntuales,
pero no se pueden dejar en el juego.
1- Adelante no es adelante
Y por lo tanto atrás no es atrás. Es
decir que si estamos jugando y queremos ir al fondo de la pantalla,
lo más normal es que pulsemos la tecla de arriba (o joystick hacia
arriba) y ya está. Pero si hacemos esto es bastante probable que el
personaje se desvíe a un lado, tal y como se ve en la primera parte
del vídeo. Así que a la hora de jugar es bastante molesto, porque
hay que corregir la posición constantemente y da la impresión de
estar reconduciendo todo el rato al personaje que tiende a desviarse
de donde queremos. ¿Y esto por qué pasa? Pues por la combinación
controles según cámara + cámara sobre raíles + apuntar al
personaje. Hago un croquis de paint cutre cutre, para que se entienda
mejor:
Como se puede ver, la flecha azul
indica hacia donde irá el personaje si pulsamos el botón arriba. En
el paso 1, va en una dirección, que no es exactamente el fondo del
escenario ni la dirección del raíl de la cámara, pero al pasar al
punto 2 (suponer que la distancia entre ambos puntos es
infinitesimal), la dirección ya no es la misma, sino que ahora
adelante significa algo más a la izquierda. Y así es como poco a
poco nos vamos torciendo y si queremos ir al fondo tenemos que ir por
la línea del raíl o ir corrigiendo la dirección constantemente.
Soluciones:
- Se puede hacer que la dirección de adelante no se tome como la normal al plano de la pantalla, sino que sea la secante al raíl en cada punto, o la recta que une cada nodo del spline con el siguiente. Así la dirección iría cambiando con el raíl, algo que se hace en tiempo de diseño. Tengo que probarlo, pero creo que el movimiento quedará raro, que no nos será fácil adivinar que esa dirección hacia delante es en función de un raíl invisible para el jugador.
- Hacer que la cámara no apunte al personaje, sino que apunte como si fuera una vagoneta en una montaña rusa, siempre mirando hacia delante en las vías. Esto soluciona el problema y hace el movimiento más sencillo de controlar. Pero restringe hacia donde mira la cámara. Y hay que hacer los escenarios y probarlos bien de tal forma que no sean tan anchos como para que el personaje desaparezca de pantalla, o buscar solución a esto.
2- Parpadeo entre tomas al cambiar de spline
Es algo raro, de estas cosas que no
suelen pasar y que puedes pasar el juego sin verlo, pero si se te
ocurre andar más a la izquierda de lo normal, por ejemplo, de
repente pasa. La imagen parpadea entre planos, si nos movemos un poco
ya deja de hacerlo. Siempre he pensado que era un problema de
precisión, que en una parte se volvía loco porque en unos frames la
cámara le daba en la posición 0.001 de un spline y en otro frame en
la 0.999 del spline anterior. Eso efectivamente haría que parpadease
entre los 2 splines y algo cambiase el plano. Pero no sería tan
brusco. Porque en esos planos parpadeantes vemos el correcto, pero el
otro no tiene nada que ver, la cámara se va a cuenca. Así que
seguramente quede en algún estado inestable, una posición negativa
del spline o algo así, que hace que el spline se extrapole más allá
de los límites permitidos y haga cosas raras.
Soluciones:
- Aquí no tengo una solución clara, al no saber del todo de donde viene el problema. Así que haré debug de la posición que toma la cámara en el spline para ver por donde se sale y si haciendo algún tipo de comprobación se puede evitar.
3- Distancia al personaje inestable
El primer problema entiendo de donde
sale y tengo soluciones, el segundo sospecho por donde pueden ir los
tiros y se por donde mirarlo, y este tercero es el que me tiene más
perdido. Lo que ocurre como se puede ver en la parte final del vídeo
es que al cambiar de un spline al siguiente, en lugar de ser un
cambio suave que casi ni se note, da un salto brusco, y de repente la
cámara está muchísimo más próxima al personaje que antes. Tanto
es así que hay sitios por los que la cámara va a la par del
personaje, y vemos al protagonista de perfil. Y esto porque la cámara
siempre mira al personaje, si hiciéramos el cambio propuesto como
solución al problema 1, podría quedar fuera de plano. Esta
distancia al personaje se calcula de forma fija en el trozo de
spline, pero en cada trozo según su longitud. Por si fuera culpa de
la curvatura he probado con splines casi rectos. También que tengan
los nodos equidistantes, ya que la forma de recorrer el spline no es
regular sino están igualmente separados. Aún así sigo teniendo ese
error.
Así que seguramente tenga que
replantearme de forma completa el modo en que calculo la distancia a
la que tiene que estar la cámara en la nueva versión.
No hay comentarios :
Publicar un comentario