En esta clase, vamos a añadir un poco de código extra para hacer que los coches se aparten el uno del otro
si hay una colisión.
Y este código también ayudará a los coches a adelantarse unos a otros.
Así que lo que vamos a hacer es tomar el punto de la cápsula o nuestro punto de seguimiento que estamos tratando de conducir
a y moverlo por un cierto desplazamiento si detectamos una colisión.
Así que tomemos el coche que está detrás en este caso.
Cuando choque con el coche de delante, provocará una colisión en ambos coches.
La secuencia de comandos en ambos coches va a volver a calcular una nueva posición de la meta que se basa en la posición del rastreador, más
un poco de un desplazamiento.
Y lo que va a hacer es hacer que un coche gire en una dirección y el otro coche gire en la otra
dirección, lo que le dará algunas dinámicas de evasión realmente interesantes con un código relativamente
simple.
Y lo que vamos a hacer es utilizar los colisionadores y el cuerpo rígido que ya está en el coche.
De acuerdo.
Así que vamos a añadir el código.
Para hacer esto, necesitarás un script llamado detector de vacíos, y puedes ver cómo se derrama aquí.
Así que sólo es añadir un script de C-sharp a tu proyecto.
Abramos eso y añadamos el código.
Así que en la parte superior, vamos a añadir en un público.
Flotador.
Evita el camino.
Es igual a cero.
Carroza pública.
Evita el tiempo.
Es igual a cero.
Y estos son los ajustes que vamos a utilizar desde otro lugar.
Pero también se puede establecer en el inspector.
Entonces queremos un flotador público para la distancia del vagabundo igual a cero.
Y eso va a ser lo lejos que podamos alejarnos del camino.
En realidad, no hagamos ese cero.
Hagamos ese for y public float para una longitud void, que es el tiempo que queremos mantener evitando.
Cuatro.
Así que este es el momento en el que queremos salirnos de nuestro camino de evasión.
Ahora no vamos a utilizar un inicio y una actualización en estos.
Vamos a utilizar valores de activación para determinar cuándo debemos movernos.
Así que queremos void en el gatillo de salida de la llamada de colisión y básicamente vamos a averiguar cuando dos coches han llegado dentro de la distancia
de disparo de la otra y luego usar eso para poner realmente algunos evitar el código en.
Así que recoger la etiqueta de objeto de juego no es igual a coche entonces vamos a girar y si lo hace, entonces vamos a evitar el
tiempo es igual a cero.
Así que en realidad estamos poniendo el tiempo de evitar a cero si estamos saliendo de una especie de colisión o estar en
el camino de alguien.
Ahora el código real va a suceder para evitar cuando estamos en la distancia de disparo.
Así que en la llamada del colisionador de la estancia del gatillo y vamos a poner esa otra E fuera de allí.
De acuerdo.
Y luego vamos a ir si se llama etiqueta de objeto de juego.
No es un coche.
Por supuesto que estamos comprobando que tenemos una etiqueta de coche para que sólo estamos comprobando que colisionamos con los coches.
Para que este script funcione, por ejemplo, no queremos que otras cosas se activen.
Por ejemplo, hay cualquier otro disparador que usted podría
poner en su entorno y luego vamos a cuerpo rígido para el otro coche es igual a la llamada componente de conseguir, cuerpo rígido evitar el tiempo es igual al tiempo de tiempo que es el tiempo
ahora más la longitud de evitar.
Luego crearemos un vector tres, que será el otro objetivo local del coche.
Así que donde está el otro coche, con respecto al coche actual, va a ser igual al punto de transformación
inversa.
De nuevo, tiene que ser relativo y no en coordenadas mundiales.
Otro coche.
Objeto de juego de puntos.
Transformación de puntos.
Posición del punto.
Flotador.
Otro ángulo del coche.
El ángulo con el otro coche, por supuesto.
Así que esta será nuestra matemática f punto a10 dos.
El mismo código de ángulos que hemos utilizado para desplazarnos por nuestros waypoints y calcular esos otros.
CA.
Objetivo local y será punto x y luego otro objetivo local punto z.
Así que lo mismo que nuestro rastreador de progreso, nuestros puntos de ruta.
Cuando miramos el ángulo de qué camino, en qué dirección íbamos y dónde
está ahora, lo hacemos con los coches.
De acuerdo.
Y luego vamos a establecer nuestra trayectoria de vacío es igual a la distancia de vagabundeo multiplicado por la matemática negativa f seno
otro ángulo del coche.
Así que en realidad estamos tomando el seno negativo del ángulo con el otro coche,
de modo que giramos la misma cantidad de ángulo en la otra dirección, así que lejos del otro coche.
Bien, eso es todo lo que necesitamos aquí.
Vamos a guardar esto y vamos a volver a la unidad.
Vamos a seleccionar nuestro coche porque necesitamos poner este script de evasión en él.
De acuerdo.
Y vamos a agarrar y poner un detector de vacíos allí.
De acuerdo.
Así que aquí están nuestros valores.
La distancia de desplazamiento y la longitud de evasión son cosas que puedes cambiar y con las que puedes jugar.
Las otras cosas se usan en realidad dentro de nuestro script controlador, así que abre eso.
Y lo que vamos a hacer es en la parte superior y puede que hayas visto estas en el vídeo anterior como líneas de código que
no eran necesarias todavía, esta de aquí.
Por lo tanto, queremos conseguir el guión de nuestro detector de voz en este coche en particular y cuando para mantener una copia de ella para
que no estamos teniendo que conseguir todo el tiempo.
Y luego, dentro de nuestro inicio, lo estableceremos y obtendremos el detector de evasión que está en este objeto de juego
en particular.
Muy bien.
Así que ahora vamos a utilizar esta abajo dentro de nuestra actualización.
Así que si bajamos a la actualización, verás el código ya aquí.
Así que he movido las cosas un poco.
Todo lo que he hecho aquí en la parte superior es un vector tres objetivo local ya no se establece aquí.
Se fija en función del tiempo de evasión.
Si no hay que evitar el tiempo, entonces tenemos el valor que teníamos antes.
De lo contrario, vamos a crear un objetivo local diferente que incluya nuestra ruta de evitación utilizando la dirección derecha de
los rastreadores.
Así que el movimiento lateral multiplicado por la trayectoria de evasión.
O en realidad sólo hace lo que hace el diagrama al principio de esta conferencia.
Simplemente mueve el rastreador hacia un lado u otro, dependiendo de hacia dónde queramos ir después.
De acuerdo.
Entonces, el ángulo objetivo que estamos calculando en la parte superior, también lo he movido hacia abajo aquí debajo
de este código porque el objetivo local es lo que se utiliza para calcular este ángulo objetivo.
Bien, ahora esta distancia al objetivo, la sacamos en la conferencia anterior que todavía tenía
por ahí.
No lo necesitas.
Obviamente, no lo estamos usando para nada.
Por supuesto, puedes comentarlo en este momento.
Puede que quieras usarlo más adelante, ponerlo como otra de tus variables, pero no es necesario.
Bien, estos son los cambios.
Guardemos esto ahora.
Volveremos a la unidad.
Ahora nuestro coche necesita tener un gatillo en él para que realmente pueda desencadenar otros coches si lo seleccionas.
Por el momento, tiene un colisionador, que es muy bonito y está muy unido al coche.
No quieres usar esto porque en el momento en que este colisionador y la versión de otro coche han chocado
entre sí, los coches han chocado de verdad.
Así que queremos un poco de un búfer sentado alrededor de este coche, y no queremos que ese búfer para ser realmente
un objeto de la física en cuanto a un cuerpo rígido y o causar una especie de colisiones físicas.
Sólo queremos como disparador.
Así que seleccione el coche y, a continuación, en su inspector, vamos a ir a la parte inferior aquí
y vamos a añadir un colisionador caja así que hacer eso.
Luego en la escena tenemos que encontrar donde va eso y va a ir como aquí abajo.
De acuerdo.
Así que se sienta básicamente en el origen del coche.
Tienes que alinear esto con el coche básicamente.
Así que adelantémoslo.
Sólo es necesario que esté alrededor de la carrocería y donde otros coches vayan a golpearla.
Así que echemos un vistazo.
Vamos a mover el centro de esta caja colisionadora hacia el centro del coche.
A continuación, el tamaño de la misma podemos agarrar el valor Z y si usted comienza a arrastrar que, con el tiempo
va a salir de ambos extremos del coche real.
Y puedes ver que eso se está viendo ahora para mí.
De acuerdo.
Ahora, el hecho de que no sea más alto que este valor de wintergreen está bien para mí porque ningún otro
coche va a golpear hasta allí.
Ahora bien, ¿a qué distancia quieres que puedan llegar los demás coches antes de que decidan que van a apartarse
del camino?
Bueno, eso dependerá de cuál sea su valor Z aquí, de la cantidad de espacio que lo rodee.
El otro que querrás es probablemente un poco de amortiguación lateral también, para que no se acerquen
demasiado.
Y esa es otra cosa con la que puedes jugar si quieres.
Ahora, una vez que tienes eso, vas a ir y establecer es gatillo en esa caja.
Collider para que utilice los métodos de activación que acabamos de codificar.
Por último, quieres subir al inspector en la parte superior y quieres etiquetar tu coche como coche.
Si no hay ningún coche en su lista, usted quiere ir a añadir la etiqueta en el coche de la etiqueta.
Usamos coche en minúsculas.
Asegúrate de hacer eso, luego vuelve al coche y asegúrate de seleccionar coche para su etiqueta.
Bien, lo hemos hecho bien.
Eso es todo.
Así que eso es un coche.
Ahora, en este punto, es probablemente una buena idea guardar su proyecto.
Sigo teniendo problemas con el mío estrellarse, que sí creo que es mi video, mi software de captura de pantalla.
Pero sí causa inconvenientes.
Sí.
Así que vamos a añadir otro coche.
Así que selecciona el control de ese coche dx ese coche.
Y en la escena, vamos a pulsar la tecla y mover el otro coche fuera.
Bien, ahí está.
Allí ahora este otro coche es una copia exacta de nuestro coche aquí, lo que significa que va a
tener la cámara adjunta.
Así que asegúrate de ir a ese segundo coche y quitar la cámara porque realmente sólo quieres la
cámara en este.
O puedes quitarlo del todo y no tenerlo en ningún coche.
Depende de lo que quieras hacer con esto.
Así que hay un coche y vamos a controlar D este segundo coche porque no tiene la cámara
y luego podemos utilizar la W para mover eso aquí.
Control D.
Y puedes añadir tantos coches como quieras en este punto.
Puedes pulsar el play y echar un vistazo a lo que obtienes.
Te diré que no va a ser perfecto.
De hecho, vamos a volver en la próxima conferencia para evaluar lo que hemos hecho.