La forma en que tenemos configurado nuestro personaje actual es usar el LookAt para girar hacia la ubicación objetivo,
pero el problema con esto es que hace que tu personaje se mueva instantáneamente.
En cambio, queremos introducir un método para que nuestro personaje gire lentamente hacia el objetivo.
Para hacer eso, usaremos la interpolación lineal esférica o SLERP para abreviar y lo
que hace es interpolar entre el vector que estamos enfrentando actualmente y la dirección en
la que queremos estar.
Lo hace durante un período de tiempo particular, de modo que puede girar un poco cada vez hasta llegar
a la dirección de su meta.
Comencemos a implementar esto en Unity. Así que vamos a modificar el proyecto anterior con
el que terminamos dentro del script MoveLocal.
Lo primero que necesitamos es un flotador para la velocidad de rotación, así que llamémoslo rotSpeed y lo pondré a 0. 5f.
Lo más probable es que una vez que comience a mover a sus personajes, no querrá que la velocidad y la
velocidad de rotación sean exactamente las mismas.
Por lo tanto, tener dos valores diferentes funciona muy bien porque puede ajustar cualquiera de los dos. Por supuesto, en este caso, los tengo
lo mismo.
De hecho, podría bajar eso a 0. 1)
Ahora, tenemos un lookAtGoal, pero también necesitamos calcular la dirección en la que queremos estar, así
que volveremos a lo que teníamos originalmente y combinaremos estos dos.
Entonces, queremos trabajar en nuestra dirección que debemos enfrentar.
Por lo tanto, es una dirección de Vector3 y será igual a nuestro lookAtGoal menos nuestra posición actual.
Ahora, el único otro cambio que tenemos que hacer es convertir este LookAt aquí en un slerp que usará la dirección
como su rumbo.
Así que elimine la línea LookAt y reemplácela con esto.
El slerp está configurando la rotación de tu personaje, por lo tanto, estamos haciendo esto. transformar. rotación = en lugar
de una posición o un Traductor y esto. La rotación se establece utilizando el método
slerp que puede encontrar en la clase Quaternion. Quaternion es una estructura de datos compleja que mantiene una rotación y
puede hacer todo tipo de cosas
fantásticas, pero en este caso está girando un ángulo de mirar en una dirección a otra.
Entonces el slerp mismo toma la rotación actual de tu personaje.
Luego realiza una LookRotation en su dirección, por lo que la dirección es nuestro vector que calculamos que apunta hacia
nuestra meta, pero no podemos hacer el slerp en el vector de dirección.
Queremos hacer el slerp en el ángulo que tenemos que rotar, para llegar desde donde
estamos mirando a la dirección particular.
Entonces este Quaternion. LookRotation
nos dará la rotación que debe ocurrir para estar orientados en 'dirección' y, por lo tanto, combinar estos dos
y compararlos poco a poco,
luego lentamente pasamos de uno a otro.
Ahora, la velocidad a la que giramos es el tercer valor que pones dentro de este método y
lo basamos en el mismo tipo de velocidades que usamos para mover un personaje hacia adelante, donde tenemos el tiempo delta
multiplicado por nuestro tiempo de rotación .
Correcto.
Así que guardemos eso y entremos en Unity y veamos cómo funciona esto. Asegúrate de que tu personaje esté alejado
de la meta, para que puedas ver cómo se produce el giro. Así que presiona Play y el personaje seguirá siendo empujado hacia adelante
a lo largo de su vector hacia adelante, que es lo que queremos y, al mismo tiempo,
ese slerp está operando para darle la vuelta a tu personaje y puedes ver aquí en la vista
de escena que está comenzando a arco alrededor hacia allí.
Ahora es un poco lento, esta velocidad de rotación, así que detengamos eso.
Regrese a
nuestro MoveLocal y aumente.
Entonces, si ponemos eso para decir 4 y lo guardamos y luego lo ejecutamos nuevamente.
Descubrimos que el personaje gira mucho más bruscamente y ahora podemos conducir nuestro cubo y el
personaje girará y lo seguirá.
Así es como mueve a su personaje hacia adelante y cómo realiza un slerp
para que su
personaje se oriente en la dirección correcta y solo en estos pocos videos, hemos cubierto casi todos los conceptos
básicos que necesitará para obtener algunos comportamiento complejo que ocurre en los NPC.