En la conferencia anterior, te dejé con el reto de crear un spawn para engendrar pacientes.
Muy bien, lo que vamos a hacer ahora es escribir eso, y te mostraré mi método.
El tuyo puede ser un poco diferente, pero mientras consiga instanciar a los pacientes y ponerlos en tu
mapa, entonces estamos bien.
Bien, en primer lugar, necesitamos que nuestro paciente sea un prefabricado.
Ahora, si recuerdas, comenzó como un prefabricado, por lo que hemos hecho algunos cambios en nuestro paciente básico.
Así que usted quiere ir y hacer clic en su paciente y luego vamos a arrastrar eso y voy a subir
en el inspector y queremos anular todas estas cosas que hemos hecho a nuestro paciente.
Así que haga clic en aplicar todo para aplicar los de nuevo a la prefabricación.
Bien, ahora vamos a crear una llave en nuestra jerarquía.
Permítanme desplazar todas estas cosas hacia arriba.
Vamos a hacer clic con el botón derecho y crear un vacío de llave.
¿De acuerdo?
Y esa va a ser la posición en la que estará nuestra llave.
Ahora, se encuentra allí, así que vamos a arrastrarlo hacia aquí.
Ahora, si quieres ver dónde está, además de estos ejes, puedes usar el truco que he hecho antes con la zona
de espera y la recepción, que es añadir un renderizador de malla cúbica o un colisionador de caja o algo así para que puedas
verlo realmente.
Ahora tiene que estar fuera del hospital y tiene que estar cerca del suelo.
Ahora el suelo está a cero.
Así que en el inspector voy a echar un vistazo a mi Y para eso.
En realidad voy a ponerlo en, digamos, siete.
No importa si está un poco en el aire, porque van a desovar allí y luego
sólo bajar al suelo y luego se mueven en.
Muy bien.
Así que dejémoslo ahí ahora.
Vamos a crear el código para eso.
Así que crea un script en C-sharp y llámalo Spawn.
Y vamos a abrirlo y editarlo.
Va a requerir, en primer lugar, nuestro objeto de juego.
Así que nuestro prefabricado.
Así que será el objeto de juego público paciente prefabricado.
Y luego cuántos pacientes queremos.
Así que pongamos eso aquí public int num.
Pacientes.
Y luego abajo en el inicio vamos a crear un bucle for para int i igual a cero.
I es menos que el número de pacientes.
Muy bien.
Además.
Y luego dentro de este bucle, vamos a instanciar a nuestros pacientes.
Bien, entonces queremos instanciar, y vamos a usar nuestro prefabricado de paciente.
Y vamos a ver, queremos ponerlo en esta posición de transformación de la parada, que es su engendro de la posición
y la vuelta en la identidad para, básicamente, una rotación por defecto y deletreamos transformar correctamente.
El problema con esto que estoy pensando ahora es que si hacemos un bucle con todo esto al principio,
vamos a terminar con qué, ¿100 pacientes directamente?
Ahora, eso podría ser lo que quieres.
Prefiero que esto los genere en intervalos particulares.
Así que en lugar de eso voy a bajar aquí y poner vacío.
Vayamos a engendrar paciencia.
Y dentro de aquí moveré este código de instanciación.
Así que control x, pon eso ahí abajo.
Esto hace que nuestros pacientes de NUM y nuestro bucle sean superfluos.
Pero ahora has visto cómo lo harías si quisieras crear un montón de pacientes de una sola
vez.
Y dejémoslo ahí, en realidad.
Y lo haremos de todos modos.
Así que lo haremos entonces.
Vuelve a poner esta instanciación ahí arriba.
Así que todo esto es su lote inicial de paciencia.
Y luego lo que vamos a hacer es invocar.
Paciente de spawn.
Después de, digamos, 5 segundos y dentro de spawn patient, conseguiremos que se invoque a sí mismo.
Así que siguen apareciendo pacientes.
Y ahora aquí vamos a tener un rango aleatorio para el tiempo entre pacientes.
Así que digamos que queremos pacientes cada 2 a 10 segundos que va a hacer.
Así que ahora puedes ver dos formas en las que podrías desovar, ¿verdad?
Así que vamos a guardar esto y vamos a volver a la unidad y queremos obtener nuestra secuencia de comandos spawn y arrastrarlo
a nuestro spawn aquí.
Y luego vamos a asignar nuestro prefab paciente, que está de vuelta en nuestra carpeta prefabs.
Así que si vamos a nuestra carpeta Prefabs, tenemos nuestro paciente allí, podemos arrastrar y soltar en
el prefabricado de paciente y el número de pacientes.
Este es el número inicial que se crea y luego se genera uno cada 5 segundos o lo que se haya establecido.
Así que vamos a crear una cantidad inicial de cinco y luego van a caer del cielo, básicamente, y empezar
a llegar al hospital.
Ahora, este pequeño tipo aquí que ya está en el hospital, puedes borrarlo o simplemente apagarlo si quieres
usarlo para probar cosas un poco más tarde.
De acuerdo.
Así que pulsemos el play y veamos lo que tenemos aquí.
Así que están nuestros cinco que son inicialmente engendrados y todos vienen al hospital y entonces
aquí vienen los extra.
Así que si vamos a nuestra vista del juego aquí, permítanme establecer esto a una imagen de alta resolución para usted.
Ahora van a venir a registrarse y una vez que se hayan registrado, se irán.
Después de que pasen por delante de los demás y luego entren aquí.
Sí.
Así que algunos pedacitos de información de depuración en este punto.
Si ves que no llegan a su destino, que se saltan los pasos o lo que sea, como, ya sabes, va a pasar
mientras intentas probar esto.
Lo más común en este escenario particular, o el uso de la malla de navegación es que los agentes no pueden
llegar a su destino.
Por ejemplo, aquí abajo, tenemos una gran pila en esta sala de espera.
Ahora, recuerda que la sala de espera tiene una ubicación específica, que es un pequeño punto.
Si selecciono eso y vamos hasta aquí, está justo ahí.
Eso significa que los agentes tienen que llegar a ese punto específico para ser considerados en la sala de espera.
Y si echamos un vistazo al código de esto, hagamos una pausa.
Vamos a volver al código de alcance de los agentes y a echar un vistazo a nuestro código de agente G para considerar que realmente han
llegado a un destino.
Si echamos un vistazo a la última actualización, tenemos esta línea aquí para la distancia restante.
Así que va a considerar que has llegado a un waypoint de destino en la malla de navegación.
Si estás a una distancia.
Ahora bien, si se utilizan agentes de tamaño unitario como yo, me parece que uno es bastante aceptable.
Puede que quieras hacer esto un poco más grande si ves que tus agentes no llegan
a ese lugar.
Ahora, la otra cosa que podría suceder es que si usted establece esto a 20, entonces el agente considerará que ha llegado a un
waypoint cuando está como a 20 unidades de distancia, lo que hará que las acciones se vean un poco extrañas.
Así que puede hacer que un agente parezca que ha llegado a la sala de espera cuando todavía está aquí fuera,
que es algo que no quieres.
Así que eso es una cosa.
Ahora, cualquier agente que no llegue a un waypoint seguirá intentando ejecutar una de las acciones.
De acuerdo.
Y se puede saber si se selecciona un agente.
Así que busquemos a alguien que realmente siga haciendo cosas.
Este tipo aquí y en el inspector, vamos a encontrar a su paciente padre.
El ir a la sala de espera, ir al hospital y registrarse.
Si echas un vistazo a todas esas cosas, verás que hay una casilla pública en la parte
inferior llamada "running" que te dirá qué acción está intentando ejecutar.
Así que este agente en particular de aquí, está en la recepción.
Así que, obviamente, sigue registrándose.
Y si echamos un vistazo a su registro, se puede decir que, de hecho, sigue funcionando.
Ahora, si presionamos y pulsamos pausa y esperamos un momento hasta que termine, puedes ver ahora
que eso se ha marcado y ahora va a la sala de espera en su lugar.
De acuerdo.
Así que ahora, mientras esto sucede, vamos a detenernos de nuevo en otra manera de echar un vistazo a la depuración.
Esto es si vamos a la consola, verás que está imprimiendo los planos.
Y aquí puedes ver que dice que el plan es ir al hospital, registrarse, ir a la sala de espera.
Así que este plan está sucediendo en orden y he derrumbado lo que está pasando en la consola, ya que sólo será escribir
esto para cada agente en particular.
Pero esto te está mostrando que este es el plan que han elaborado, que es el plan
que tú querías que elaboraran.
Así que al menos todo es bueno, ¿no?
Así que eso es conseguir un montón de agentes en funcionamiento y despojarlos.
Cuando volvamos en la próxima clase, tendré que hablar un poco más de la depuración de estos escenarios
porque en realidad es una parte bastante importante de esto, y empezaremos a trabajar en conseguir que nuestra enfermera
se ejecute.