Unity práctico: Videojuego 3D runner

Administrar la posición de nuestra cámara y del personaje

¡Prueba gratis durante 10 días

nuestros 1203 cursos !

Prueba gratis Mostrar modalidades de suscripción
Probaremos las distintas posiciones de nuestra cámara con respecto a nuestro personaje en 3D dentro de Unity. Para eso moveremos algunos valores y crearemos una función que nos ayude a animar a nuestra cámara.

Transcripción

Ahora que ya tenemos nuestra clase 'singleton', lo que vamos a hacer es crear dentro de la jerarquía un 'GameObject' vacío, que vamos a llamar 'singleton', y arrastraremos el código aquí. Voy a "setear" sus valores de transformación solamente para que quede ordenado. Bien, lo que vamos a hacer ahora es trabajar un poco con la cámara. Para eso voy a decirle que tanto la vista 'back' como 'left' deben tener un identificador. Para eso además yo he creado en cada una un 'Box Collider', es el que ven acá. Pueden cambiarle los tamaños, etc. Yo lo uso porque lo que vamos a hacer con el personaje es que va a detectar cuando entres y cuando salgas para saber si tu cámara es la correcta o no. Para eso vamos a ir a cualquier 'GameObject' en realidad y vamos a crear nuevos 'tag'. Voy a agregar un 'tag' estos 'tag' van a ser 'floorLeft', 'floor Right' 'floor Back' y 'floorTop'. Vamos a seleccionar el 'back' y cambiaremos su 'tag' a 'floorBack'. Aprovechamos y aplicamos el cambio a los prefab. Voy al 'left' y selecciono 'left' y le doy a aplicar. La idea es que cuando entre el personaje, detecte esto de acá. Muy bien, cuando yo creado el 'Box Collider', a diferencia de lo que hemos hecho con las columnas o con las plataformas de aquí, es que ahí hay una colisión, yo lo que quiero es que me avise cuando hay un contacto, eso es un disparador, a eso se le conoce como un 'trigger'. Un 'trigger' solamente el único cambio adicional que tendríamos que hacer es decirle aquí check. Es el único cambio, en ambos. Y cuando tengamos el 'top', el 'right' también. Una vez que hago eso, bueno, grabo y voy al código. En mi clase 'player' voy a ir hasta acá 'OnCollisionEnter'. El 'OnCollisionEnter', puntualmente como ya vemos, detecta la colisión. Yo voy a decirle ahora que voy a crear un 'OnTriggerEnter'. 'OnTriggerEnter' lo que hace es reconocer ahora los que tienen el check activo de 'triggers' y aquí no acepta un 'collision', sino un 'collider'. Lo vamos a llamar 'otros'. Entonces vamos a poner un 'print' para ver si estamos haciendo o no lo correcto: 'other', punto, 'gameObject', punto, que nos diga sobre el 'tag'. Vamos a Unity, grabamos y probamos. Está el personaje, le doy a avanzar, miren qué dice acá: 'floorBack', 'floorBack', avanzo y vamos todavía un poco lentos, pero no se preocupen que esto es puntualmente para hacer testeos. Y miren 'floorLeft'. Entonces, ya estamos trabajando con esa de ahí. ¿Qué vamos a hacer nosotros? Cuando detectemos que estamos entrando a una de estas condiciones, a estos 'triggerEnter', le voy a decir a nuestro 'singleton' que para eso hay que inicializarlo. Voy a borrar, vamos a ir aquí a las propiedades y escribiré 'private', 'singletonController' 'singleton' 'singleton'. He creado la propiedad y dentro del constructor lo que voy a hacer es capturar la instancia. 'Singleton' igual a 'singletonController', punto, 'instance'. Con esto yo ya tengo la referencia del 'singleton' en mi variable 'singleton'. Ahora sí, vámonos aquí y recuerdan que nosotros hemos hecho dentro del 'singleton' un método para guardar esos datos, se llama 'callMe' y nos pide de referencia qué objeto estamos usando. Bueno, le vamos a pasar la referencia que tenemos, que es el 'tag'. Le voy a comentar esto de acá. Hecho esto, ahora nos es más fácil ir sobre la categoría y comenzar a hacer las consultas de la cámara. Voy a grabar. Voy a aprovechar que estoy aquí y me voy a llevar esto de acá. ¿Por qué? Porque también necesitamos la referencia en la cámara 'controller'. Voy aquí y de paso me traigo la instancia asignada. Entonces, ahora lo vamos a hacer dentro de nuestra cámara. Voy a borrar esto, un 'FixedUpdate', vamos a aprovechar que estamos aquí y modificamos este método. La idea es que aquí nos está diciendo puntualmente sobre qué estamos trabajando, sobre qué 'gameObject' del escenario estamos trabajando. Yo puedo hacer aquí un 'string', le voy a poner 'obj' va a ser igual a un 'singleton', punto, 'getCurrentGameObject'. ¿Se acuerdan que hicimos este método? Que lo que hace es retornarnos el 'gameObject' que hemos guardado. Y seguidamente con ese valor vamos a mover la cámara. Para mover la cámara, voy a crear un método 'moveAnimate', que me va a recibir el 'gameObject' con el cual estamos trabajando. Abro y cierro paréntesis, abro y cierro llaves, ¿no es cierto? Voy a hacer aquí un 'transform' a la rotación, que va a ser igual a la clase donde están todos los temas de rotación en 'Quaternion', punto 'Slerp', que ya lo conocemos, que nos pide tres parámetros. El primero es la ubicación actual del 'transform', punto, 'rotation', coma, y lo que queremos hacer con esta animación es que la cámara actual vaya a donde está la referencia que pusimos sobre las cámaras, ¿se acuerdan que hicimos el 'top left', 'back' y 'right'? Bueno, esa de ahí, que está dentro del 'go', punto, 'transform', punto, rotation, coma, y además el 'time', punto, 'deltaTime' y vamos a necesitar una fuerza con la cual trabajar. Por lo pronto le vamos a poner 1.5f por lo pronto. Con esto estamos haciendo la rotación entre dos puntos y además tenemos que hacer una de traslación de la posición en sí. Entonces hacemos uno de 'transform', punto, ahora sí, 'position' igual a un 'Vector3.Lerp', abro paréntesis y nos pide también los tres puntos. Puntualmente o básicamente lo que estamos buscando es la interpolación entre vectores, así que le diré aquí 'this.transform.position', coma, 'go.transform.position', coma, y el tiempo del 'deltaTime' por 1.5, eso después lo vamos a convertir en una variable, por ahora solamente me interesa el eje. Y con esto ya tenemos preparada nuestra cámara para trabajar con los puntos fijos que pusimos para la rotación de la cámara

Unity práctico: Videojuego 3D runner

Crea un tipo de juego muy de moda a día de hoy, un runner en 3D. Emplea el trabajo de tu equipo de diseño y aprende a agregar la física e interacción del personaje con el entorno.

4:29 horas (43 Videos)
Actualmente no hay comentarios.
 
Software:
Fecha de publicación:9/09/2016

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.