Unity 3D: videojuego shooter

Programar la rotación del personaje

¡Prueba gratis durante 10 días

nuestros 1145 cursos !

Prueba gratis Mostrar modalidades de suscripción
Nuestro personaje será controlado por el mouse en la rotación y por el teclado en la translación. Para lograr el trabajo en conjunto, crearemos unos métodos que nos ayuden a rotar el personaje teniendo como base el suelo de nuestro videojuego.

Transcripción

Ahora que ya podemos animar a nuestro personaje, lo que vamos a hacer es que pueda rotar según la dirección o el movimiento de nuestro "mouse". Para eso, primero vamos a ir a seleccionar el plano, vamos a ver que aquí dice 'Plane', vamos a ponerle 'Piso' para saber que estamos tratando con el piso, Y acá donde dice Layers vamos a extenderlo y agregaremos un "layer". En la que esté disponible le pondremos 'floor' en minúscula. La idea es que podamos identificar que estamos trabajando con este "layer". Volvemos a seleccionar el piso y otra vez desplegamos en Layer y seleccionamos Floor. Esto nos va a permitir identificar nuestro piso. Volvemos al código y vamos a crear unas variables más. La primera va a ser un 'Vector3' para almacenar estos datos, 'playerToMouse'. La idea, como comentaba, era que este 'Vector3' almacene el eje X, el eje Y y el eje Z de nuestro Player con referencia al "mouse". Vamos a guardar otra variable entera que vamos a llamarla 'floorMask', que lo que va a hacer es capturar la máscara que hemos creado. Y adicional a eso crearemos una variable que me defina la longitud que va a tener un rayo desde la cámara hasta el punto del "mouse". Esto va a ser igual a 100f, de "float". Una vez hecho esto, volvemos al Player y lo que buscaremos ahora –voy a minimizar de estas de aquí– es agregar un 'Rigidbody'. Lo que vamos a hacer es darle a este objeto opciones de física con la cual va a poder colisionar, tener gravedad, etc. Recuerden que lo estamos haciendo no al soldado, al 3D, sino al Player. Por lo pronto lo dejamos así, regresamos a nuestra clase y haremos un 'Rigidbody', 'rb', una abreviación solamente para poder capturar este valor. En el método 'Start' haremos lo siguiente: 'rb' igual a 'GetComponent', y capturaremos el 'Rigidbody'. Adicional a eso, a nuestra variable 'floorMask' le diremos que vamos a capturar 'LayerMask.GetMask' y nos pide el nombre de la capa que creamos, en minúscula "floor". Ahora lo que vamos a hacer es crear un método que me permita saber cuando el "mouse" está sobre el piso. Voy a ir un poco más abajo y aquí escribiremos: 'void', 'MyRotation', abro paréntesis y cierro paréntesis. Voy a crear un rayo, 'camRay', que va a ser igual a la cámara, punto 'main' –para capturar la cámara– 'ScreenPointToRay'. Y nos pide un vector. ¿Qué vector vamos a darle? El 'Input.mousePosition'. Le estamos pasando la referencia de la posición del "mouse". 'RaycastHit', le voy a poner 'floorHit' y la idea es saber cuándo estamos colisionando, en este caso con el piso. He creado la variable y le voy a preguntar si 'Physics.RayCast'. Me pide un rayo, sería 'camRay', que es el rayo que acabamos de crear, coma, la distancia fuera del Hit, coma, la distancia que hemos creado en la variable de la clase, coma, 'floorMask'. Si eso pasa es porque están colisionando, y lo que haremos será lo siguiente: dentro del 'if' le diré al 'playerToMouse' que va a ser igual a un 'floorHit.point', menos el 'transform' de nuestro Player punto 'position', 'playerToMouse.y'. Vamos a modificar solamenteesa propiedad, va a ser igual a cero. Vamos utilizar 'Quaternion' ahora para una nueva rotación. 'Quaternion.LookRotation' y nos pide un vector. ¿Qué vector? El que acabamos de editar: 'playerToMouse'. Cerramos con punto y coma y al 'Rigidbody' le diremos que vamos a mover la rotación con una nueva rotación. Entonces, resumiendo, hemos hecho un método de rotación que va a detectar la ubicación de mi "mouse" y desde la cámara va a lanzar un rayo hacia la ubicación del "mouse". Cuando existe esta colisión entre el "mouse" y mi cámara, lo que va a hacer es obtener esos valores y sobre eso va a hacer una rotación. ¿A quién va a rotar? A nuestro 'Rigidbody'. Para que esto funcione en el 'FixedUpdate', llamaremos a mi rotación. Grabo, voy a Unity y ejecuto. Entonces ahora mi personaje está moviéndose de acuerdo a la ubicación del "mouse". Obviamente si el movimiento es más vertical va a ser brusco, sin embargo igual está haciendo la rotación, miren. Está flotando el personaje, eso por ahora no es inconveniente, estamos aprendiendo sobre la rotación. Vean cómo se mueve y cuando camine se verá así. Va tomando forma nuestro juego en Unity.

Unity 3D: videojuego shooter

Desarrolla un videojuego del tipo shooter usando Unity como motor 3D. Crea los elementos visuales necesarios en un escenario y empieza a agregar a los personajes y enemigos.

3:36 horas (40 Videos)
Actualmente no hay comentarios.
 
Software:
Fecha de publicación:30/08/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.