Vamos a empezar a escribir código para nuestro first person carácter control.
Lo primero que vamos a hacer es en la carpeta del proyecto vamos a crear una nueva carpeta.
La vamos a llamar Scrubs Y aquí es donde vamos a colocar todos nuestros escritos de Cillán.
Haz clic derecho en la carpeta de scripts y crea un nuevo presilla up y llamalo Player antes de comenzar
vamos a seleccionar a nuestro Player y le vamos a agregar un componente de carácter control.
Vamos a buscarlo lo añadimos y también hay que quitar el componente Capsule el kleiber.
La razón por la cual quitamos este cola es porque cuando agregamos un carácter Controller ya tiene uno
incluido el componente carácter controles tiene algunas propiedades como por ejemplo milmo Distantes
podemos especificar un radio para decirle qué tan ancho va a ser nuestro jugador podríamos ajustar esto
al modelo que vayamos a usar para nuestro jugador aunque en nuestro caso como primera persona nos va
a importar realmente y en general puedes dejar todos estos como te Faubel.
No nos vamos a involucrar ahorita con estos parámetros.
Ok ahora vamos a abrir nuestro scrip pero antes hay que agregarlo al objeto de jugador.
Ahora que el objeto Player tiene el componente play2 es puro scrip vamos a abrirlo haciendo doble clic
y lo primero que vamos a hacer es obtener una referencia a nuestro carácter controlar desde aquí dentro
del escrito recuerdan que para eso lo que usamos es Get Component jet componés nos permite obtener un
componente y almacenarlo en una variable para que podamos tener acceso a sus propiedades después entonces
dentro de nuestras vamos se creará una variable privada que va a guardar nuestro carácter controlar
entonces escribimos iveth Carácter controller y lo voy a llamar control y Control Z sin querer.
Luego simplemente tenemos que decir contrôle es igual a Component carácter control y esto funciona porque
este es el carácter controlar están en el mismo objeto.
Entonces ahora tenemos acceso a nuestro carácter controlar y más específicamente a nuestro método.
Si yo escribo control del punto hemos estado a permitir mover a nuestro jugador y como puedes ver aquí
te pide un vector 3 que se llama moyen que lo que va a indicar es nuestra dirección de movimiento.
Recuerda que el vector 3 es una variable de tipo de posición.
Si nos estamos moviendo a la izquierda a la derecha o al frente o atrás lo que estamos haciendo es cambiar
nuestra posición.
Es por eso que necesitamos pasar a un vector 3.
Ahora hay que decir cómo vamos a utilizar nuestro método.
Cuáles son los primeros pasos.
Estamos creando movimiento para nuestro jugador que va a ser basado en nuestro carácter control.
Entonces lo primero que vamos a hacer es especificar la dirección en la que el jugador se va a mover.
Entonces voy a crear una variable que va a contener la dirección de dónde quiero mover el jugador y
establecer un nuevo vector 3.
Y recuerde que este es un juego 3D entonces vamos a ser nuestro eje X para movernos de izquierda a derecha
y vamos a ser nuestro eje Z para movernos hacia adelante y hacia atrás.
No nos vamos a mover sobre nuestro eje.
Porque ese va a ser el eje de nuestra gravedad es decir el que nos va a mover hacia arriba o hacia abajo.
Entonces esta es nuestra variable de dirección y tiene que estar basada en el input del jugador.
Entonces cómo hago para saber si me estoy moviendo a la izquierda o a la derecha o similar a nuestro
primer juego.
Podemos utilizar el manager entonces para nuestro eje x.
Vamos a decir y punto que Axis vamos a horizontal luego para allá voy a poner un cero y para z voy a
pedir imput punto que Axis vertical.
Por qué no permitir usar mis flechitas hacia arriba y hacia abajo.
Que hacemos ahora.
Ya tenemos nuestro vector de dirección y nos dice a dónde nos vamos a mover.
Ahora hay que aplicar esa dirección a nuestro carácter controlado.
Para eso simplemente escribo controlé punto móvil y le paso mi dirección.
Esta variable de dirección va a estar basada en el input del usuario así que si yo presiono por ejemplo
la flecha a la izquierda el vector de movimiento va a ser menos 1 0 0.
Si presionar la tecla hacia arriba va a ser 0 0 1.
Vamos a salvar esto.
Voy a regresar a Unity y voy a correr el juego.
Parece que tengo un error y a ver si tengo un paréntesis de más que es algo ésto.
Regreso al Unity espera que termine de compilar y corre tu juego.
Y cuando yo presioné mis teclas deberían poder moverme pero tengo un error aquí que dice que el eje
horizontal no está configurado tengo ese error porque escribí mal horizontal.
El nombre que ponemos aquí tiene que coincidir con el que está dentro de Mario si no recuerdo es como
obtener un nombre puedo decir a EDIT Luego proyectiles y luego imput y aquí en la lista de los ejes
vemos que está horizontal y vertical y están mapeados a los botones de las flechas y a doble CD.
Entonces aquí voy a describir de nuevo horizontal Unity y voy a dejar que compile.
Y cuando termine podemos correr nuestro juego.
Y ahora puedes ver aquí que ya puedo moverme hacia donde quiera pero si te diste cuenta nos estamos
moviendo súper rápido.
Sabes cuál es la razón.
No hemos implementado nuestro uso del Delta.
Entonces simplemente tenemos que ir y añadirlo a nuestra variable de dirección.
Entonces multiplicado por seis puntos del total de chavales Creep regresa a ti.
Deja que compile y corra el juego de nuevo y te vas a dar cuenta que ahora nos estamos moviendo mucho
más despacio y bueno te vas a dar cuenta que nuestros controles están mapeados al revés.
Y bueno vamos a ver cómo solucionar eso en un vídeo posterior.
Por ahora puedes ignorarlo hasta el momento nuestro jugador se está moviendo a un metro por segundo.
Entonces lo que vamos a hacer es crear una variable de velocidad para nuestro jugador y por cierto la
razón por la cual estamos moviéndonos al revés es que nuestra cámara está invertida en 180 grados cuando
lleguemos al punto de crear nuestra cámara en primera persona para nuestro jugador.
Esto se va a arreglar pero por ahora no te preocupes por eso enfócate en que nuestro carácter control
se pueda mover al momento.
Con tan solo dos líneas de código hemos creado un carácter controles que vamos a usar para este juego.
Ahora si lo que vamos a hacer es modificar esto agregando una variable de velocidad.
Vamos a hacer que el jugador se mueva a 3.5 metros por segundo habrá abre y vamos a crear una variable
de velocidad.
Vamos a escribir Flood voy a llamar Pit y lo voy a iniciar en 3.5 EFI.
Ahora si queremos modificarla desde el inspector tenemos que agregar el atributo.
Si salvamos esto y cómo lo aplicamos podríamos simplemente aplicarlo a nuestro método.
Pero lo que vamos a hacer es mantenerlo consistente con lo que estamos haciendo porque estamos haciendo
un carácter contrôle tenemos nuestra dirección y tenemos nuestro movimiento y queremos obtener un valor
que sea básicamente velocidad con dirección.
Entonces lo que vamos a hacer es crear un nuevo vector 3 y lo voy a llamar Velocity y le voy a asignar
la fórmula que necesito que es básicamente la dirección que es lo que obtenemos desde el input del usuario
multiplicada por Pi.
Y antes de ir a junichi tenemos que cambiar la función Move porque ya no lo vamos a pasar la dirección
lo vamos a pasar Velocity que es básicamente la combinación de la dirección con velocidad.
Ahora si vamos a salvar el scrip vamos a ir y Unity vamos a dejar que compile y corremos otro juego.
Y ahora si vamos a tener un personaje un jugador que se mueve basado en la velocidad que nosotros le
estamos asignando.
Y como puedes ver el movimiento es muy suave que es uno de los beneficios que obtenemos al usar el sistema
de carácter control.
Lo último que vamos a hacer es aplicarle gravedad a nuestro jugador si lo notaste.
Nuestro jugador al momento está flotando sobre el suelo.
Entonces hay que crear una fuerza gravitacional que lo va a mover hacia el suelo.
Deja de correr el juego y regresa al escrito.
Vamos a crear una nueva variable para nuestra gravedad y voy a escribir aquí free float Gravity y lo
voy a igualar a 9 puntos 81 En fin que de hecho es el valor gravitacional de la tierra y el valor que
vamos a usar para nuestro personaje.
Antes de poder realizar cualquier movimiento con nuestro jugador tenemos que asegurarnos de que esté
aterrizado y para eso lo vamos a aplicar la gravedad en cada fase.
Entonces para aplicar la gravedad necesitamos afectar el valor de nuestra Velocity.
Entonces tengo que escribir Velocity punto.
Y le vamos a sustraer el valor de Gravity y eso es todo lo que tenemos que hacer entonces salva y regresa
a Unity.
Corre el juego y el personaje debería de caer al suelo y notarás que ahora está cayendo al suelo porque
tiene una fuerza gravitacional constante que lo está afectando de menos 9.8.
Si por ejemplo ahorita ves al jugador y trato de levantarlo verás que empieza a caer otra vez como si
naturalmente tuviera gravedad.
Lo que acabas de hacer es parte del trabajo de un ried.
Solamente cuatro líneas de código.
Muchas veces es mucho más eficiente simplemente deshacerte de todas las físicas.
Los componentes de Física y crear tu propio carácter control.
Entonces antes de terminar quisiera darle una repasada a todo lo que cubrimos en este código porque
sé que esto podría llegar a ser un poco intimidante o hasta desalentador.
Y para este juego esto es realmente lo más avanzado que vamos a escribir porque está creando las físicas
del carácter controles.
Entender que la dirección es simplemente un vector que está basado en el input del usuario y que la
velocidad simplemente es una fórmula simple que estamos aplicando aquí.
O la forma en la que estamos aplicando la gravedad.
Aquí simplemente estamos restando no estamos.
No queremos afectar la gravedad por el input del usuario y simplemente lo queremos elegir.
Lo único que está haciendo la gravedad aquí es simplemente que cuando brincarse te va a volver a empujar
hacia abajo.
Y luego para mover todo simplemente estamos usando la función mof que hace magia por debajo y lo único
que le pasamos es nuestra dirección con una velocidad y le estamos asignando donde estamos multiplicando.
Y básicamente eso es todo lo que estamos haciendo.
Y bueno antes de irnos a que vamos a limpiar un poquito nuestro código para que sea más fácil de leer.
Lo que voy a hacer es separar la parte del input del usuario en una nueva línea.
Entonces claro aquí un flat y le llamo horizontal.
Entonces puedo simplemente copiar el input punto que Axis horizontal y lo voy a asignar akiha esta variable
lo terminamos con punto y coma y entonces ahora simplemente puedo pasarle en dirección.
En el nuevo vector 3 le pasó en X horizontal y se ve mucho más limpio.
Vamos a hacer lo mismo con nuestro eje vertical lo quitamos de aquí creamos una nueva variable.
Estas variables son llamadas variables temporales que sólo existen dentro del método óptimo.
Es por eso que no estamos usando ningún modificador de acceso como poiret o públic.
Aquí lo que voy a hacer es escribir béticas mente.
Vertical y luego lo aplicamos igual que hicimos con el horizontal.
Entonces en el eje Z de mi Vector de dirección voy a aplicarle Bélgica.
Qué vamos a salvar esto.
Por último vamos a limpiar nuestro método OPTI y como ya lo habíamos discutido no queremos nuestro lo
principal del juego abarrotado de código entonces voy a crear un método lo voy a llamar Bait.
Y voy a quitar el Código lobb y lo voy a meter aquí dentro.
Ahora simplemente manda llamar ese método desde OPTI sálvate scrip.
Estamos listos y en el siguiente vídeo.