Esta es la segunda parte del tutorial que había separado en dos secciones: “Animator” y “Plataformas”. Una vez explicada la parte de cómo usar el animator, vamos a mostrar ahora cómo agarrar todas esas animaciones y ponerlas en un juego de plataformas, y manipularlas para que las acciones se correspondan. También vamos a ver un concepto llamado “PlayerController”, cuya idea es agilizar bastante el desarrollo y hacerlo más prolijo.
RESUMEN:
Buenas!
Lo que vamos a hacer en esta ocasión es continuar, de cierta manera, el tutorial iniciado en AQUÍ. La idea era separarlo en dos partes, una en la que se ve netamente el Animator de Unity, y la otra, que esta, en la que se ve cómo usar todas esas animaciones para hacer un juego de plataformas.
En este primer video lo que se va a mostrar es cómo hacer que el personaje se mueva utilizando Rigidbody2D, para unas transiciones un tanto mejores. Vamos a intentar introducir el concepto de “PlayerController” o simplemente “Controller”. La idea es sólo hagamos un script de un personaje una única vez, y que luego lo podamos reutilizar para todos los enemigos, o incluso si tenemos un segundo jugador. Para esto hay una regla de oro:
« “JAMAS” DETECTAR LOS INPUTS DENTRO DEL MISMO SCRIPT DEL PERSONAJE. »
Y por qué esa regla? Porque si detectamos los inputs en el mismo scripts del personaje esto hace que nuestro personaje se vuelva menos escalable. Imaginate que queremos hacer que este personaje ahora lo use otra persona y que se pueda jugar de a dos players a la vez… Podrías decir: “Y bueno… Hago que las teclas sean variables”. Sí, sí… Sería un gran plan (no fue sarcasmo), peeeeeeeeeeeerooo… Y si ahora quiero que haya enemigos? Qué pasa si el comportamiento básico de todos es el mismo? O sea… Todos disparan, todos saltan, todos caminan, todos tienen una vida (social o dentro del juego :P). La dificultad que se nos va a presentar ahí va a ser que para esto vamos a tener que copiar y pegar el mismo código, haciendo modificaciones en los lugares donde antes usabamos inputs. Y es medio bastante engorroso. Para evitarlo, vamos a introducir este concepto:
De esta manera, lo que hacemos es UNA VEZ la programación base de UN personaje. Luego usamos EL MISMO script en todos los personajes. Con esto, NINGUNO se movería por sí solo, sino que le vamos a poner OTRO script, que es el que le va a dar las órdenes según sea el caso. La idea es que este controlador use las funciones dentro del script de nuestro personaje, según sea el caso.
Vamos al video:
Recuerden tratar de hacer los ejercicios, aunque sea en un papel, para después ver los resultados y comparar (quizás ustedes llegaron a una mejor solución que yo). Una vez hechos, vamos con la siguiente parte, que es que el personaje haga cada una de las animaciones dependiendo de su estado. Si está en el suelo, que camine, si está en el aire, dependiendo de si sube o baja, que cargue una u otra animación. Vamos a hacer también, luego, que Tim pueda trepar escaleras, y que la animación se sincronice con dicha animación:
Genial! Tenemos hasta acá a Tim recorriendo una porción de nivel, subiendo y bajando plataformas y escaleras. Por último y también necesario, vamos a hacer que pueda subirse a una plataforma móvil y esta lo lleve. El problema que deberíamos resolver acá, es que la plataforma no siempre se lleva a Tim, como veremos. Así que vamos a resolver ese problema también!
Y terminamos!
Ahora les queda a ustedes adaptarlo para que el personaje haga lo que ustedes quieran que haga. En algunos juegos quizás, en lugar de agarrarse instantáneamente a la escalera puedan querer que se aprete un botón. Busquen ustedes las variaciones, y cualquier duda que tengan haganla!
Saludos.