I don't want to be here será un juego 3D de exploración, sigilo, terror y puzles en mundo abierto.
Todo el 3D será cosa mía con primitivas de Unity y las partículas y efectos seguramente tire de algún asset de la store. Ya tengo algunos de nubes y el de Feel.
Para el control del personaje tenía comprado el Physics Based Character Controller, que pintaba genial, pero no me terminé de hacer con el manejo de la cámara para dejarla a mi gusto ni tampoco con los movimientos del personaje. En ese asset cuando le dabas hacia atrás el personaje corría hacia la cámara, mientras que yo quiero que la cámara esté siempre a la espalda. Estuve cambiando el código pero se quedaba todo muy engorroso y no terminaba de moverse como yo quería.
Empecé el viernes a programarlo con el asset ese pero no me gustaron los resultados así que ayer me puse por mi cuenta a hacer la cámara y las físicas del personaje y de momento tengo esto:
Esta es la cámara que quería conseguir. Tendré que hacer ajustes de posición, distancia y eso, pero está todo parametrizado. Cuando tenga el personaje hecho ya la ajustaré a mi gusto.
Como se ve en el gif, al girar el ratón el personaje rota suavemente. Al mismo tiempo, la cámara también rota con suavidad hasta mirar en la dirección en la que mira el personaje y con un poco más de retraso se recoloca a su espalda. De este modo, al girar hacia un lado el personaje se desplaza en la pantalla hacia el contrario y se despeja más área visible en la zona que querías ver. Además así se puede ver un poco el lateral del personaje. A parte, también hice que si nos encontramos un muro entre la cámara y hacia donde está mirando, esta avance para intentar evitarlo. Eso quizás no esté perfecto aún, pero de momento no me preocupa.
Sobre el movimiento del personaje, va con físicas. Aplico fuerzas para moverlo. Tiene un valor para adelante, otro hacia atrás y otro diferente hacia los lados. Además, hay una velocidad límite para cada dirección, de modo que por ejemplo puedes ir más rápido hacia adelante que corriendo de lado.
Para solucionar el tema de no correr más en diagonal, tenía que calcular la velocidad en la dirección del personaje y limitarla proporcionalmente, y como tengo el álgebra y las matrices bastante olvidadas iba a ser un dolor de cabeza. Por suerte descubrí una función que no conocía y que me vino de lujo para convertir coordenadas del mundo a coordenadas locales de un transform y eso me dio la vida.
Tengo que mejorar ahora un poquito el tema de subir escaleras. Tengo que pensar cómo detectar un peldaño escalable y entonces aplicar fuerza hacia arriba a ver si con eso sube bien, pero aún no me he puesto a ello.
Intentaré actualizar este hilo cada mes o así para ver el progreso. El objetivo sería sacarlo para PC si no lo abandono, que espero que no. De momento llevo 2 días de desarrollo, que en horas sería como media jornada más o menos. No está mal.
Por cierto, el juego no va a tener hud ingame. El menú será muy minimalista, jugar, ajustes de sensibilidad de ratón, invertir ejes y volumen. Estoy harto de los menús en el trabajo como para hacer ahora un juego con menús. Aquí gameplay todo y rollo inmersivo.