Ahora que tanto los enemigos como los proyectiles tienen Vox colíderes y eso es Vox coloides, tienen
triggers.
Es el momento de activar esos triggers.
A ver, la palabra en castellano de Trigger sería gatillo.
No me gusta utilizarla porque parece que tiene que haber una pistola de por medio, pero el gatillo
es el disparador, lo que activa.
Entonces la idea es ahora habrá regiones del espacio 3D marcadas con triggers.
Qué regiones depende?
Pues si esperamos que salgan un par de enemigos y un par de pizzas.
Cualquier región, como la vaca, el ciervo o un cacho de pizza, ves que tienen estas cajas alrededor.
Estas cajas son las que nos van a permitir detectar eventos de comunicación entre ellas, a saber.
Ya os dije que Unity solo creáis una cosa que son comportamientos, dije.
De hecho, si sin únicos mono mi G-2 como parte de ese mono.
Existen tres métodos que son al entrar, al estar y al salir, que podéis detectar tanto para triggers
como para colíderes.
Eso significa que si hay una colisión física, hay tres métodos de la API de Unity que son o colisionen
ter o colisión colisión exit que podéis utilizar.
Hay versión 2D con colisión en 2D o en colisiones teitos de colisión en 2D para juegos bidimensionales
para el caso de triggers.
Del mismo modo, On Trigger, Enter on trigger, stay on trigger éxito y el trigger es exactamente eso
es cuando hay una colisión, pero no física, sino de que un objeto se inmiscuye dentro de otro.
Entonces, en nuestro caso, como hemos habilitado que todos sean triggers y no queremos esa colisión
física que haría que la vaca salga disparado o el cacho de pizza salga disparado, tenemos que utilizar
los métodos on trigger trigger.
Qué opináis?
Que la destrucción debe ser al entrar, al estar dentro o al salir la pizza de dentro del labaka o del
animal.
Al entrar normalmente lo haríamos al entrar.
Lo podría hacer también en el este.
La diferencia cuál va a ser el proceso de colisión o de trigger?
Es un proceso que empieza dura y acaba.
Tenéis que pensar vosotros qué tipo de feedback queréis dar al usuario?
Creéis que el feedback ocurra?
Nada más empieza la colisión en el frente número 0 de la colisión.
Tendrá que ir en un triguera enter o colisión entre queréis que ocurra todo el tiempo durante el cual
está la bala dentro del enemigo.
Por ejemplo, si fuera una zona de lava y quisierais hacer daño mientras estáis en la zona de lava,
utilizaríamos trigger.
Mientras estáis en esa zona o en colisión stoy.
Si queréis hacer daño una cosa en castellano, una trampa, una trampa de pinchos mientras estáis en
la trampa de pinchos que vaya bajando la vida como es mientras estoy en el área de pinchos.
Sería el trigger stay mientras estáis en esa zona.
Y si quieres que sea al salir, lo típico sería un juego a lo Tomb Raider, que es una trampa.
Me cago en la puta.
Cuando sales de la trampa, mueres.
Sería un coliseo, un éxito.
Entendéis las tres vertientes?
Coliseo.
Si queréis colisión física, golpes de verdad.
Trigger Si queréis?
Pues eso, el efecto de estar en una zona, por ejemplo, de los típicos juegos donde hay una sala entera
de gas de color verde y al entrar en la sala de color verde empezáis a perder vida.
Quien nos hace daño es el gas, porque el gas no es una colisión física.
Vosotros lo atravesarse.
Es un trigger que ocupa la misma zona que el gas.
Entendais entonces en nuestro caso, pues vamos a necesitar que cuando un trigger entra dentro de otro,
una bala entra dentro del del animal o viceversa, porque al final la colisión es simétrica.
Si yo choco con choca con él, o sea, es totalmente simétrico.
Me da igual quien ha chocado con quien me da absolutamente igual.
La conexión es absolutamente simétrica, pues cuando un thriller entra dentro del thriller del otro,
algo debe ocurrir.
Y ese algo es lo que vamos a programar ahora, que es la destrucción de los dos objetos el que ha chocado
y contra el cual hemos chocado.
Así será lo suficientemente justo como para cargarnos la bala y para cargarnos el enemigo contra el
cual ha chocado la bala.
Entonces, nuevo comportamiento del nuevo script.
Esto ya nos tiene que venir de nuevo.
Carpetas, subcarpeta, scripts, botón derecho, crear, escribe Cèsar.
Cómo llamaríamos a este script?
De qué se va a encargar este script?
De los triggers algo más genérico comprobarlos trillas, comprobar colisiones, CHEC colisiones.
Colisiones.
Detect Colisión.
Lo que queráis.
Check algo.
Pregunta A quién le daríais este scrip?
Está claro que es un comportamiento y está claro que lo podéis arrastrar a gran cantidad de cosas.
A quién le daríais este objeto?
A quien lo daríais?
Esta clase escribe alas a los proyectiles o o a los animales que quieren quedárselo.
Es la bala quien debe destruir el enemigo o es el enemigo quien debe ser destruido por la bala?
He dicho lo mismo dos veces, da igual vosotros, lo programa es hacerlo como es simétrico, que en
vuestra mente estáis más tranquilos.
Es la bala la que destruye el enemigo.
Como suele ocurrir en la vida real, vaya con vuestras mentes, que sois más maquiavélicos y queréis
pensar que cuando la bala se carga al enemigo es al revés.
Es el enemigo que se carga la bala y mueren los dos en el proceso.
Me da igual.
O sea, estás creando el mundo o estás creando las reglas.
Si algo vais a tener que aprender de aquí es que vosotros sois dioses en este mundo y al ser dioses
ponéis vosotros las reglas.
Por tanto, vamos a hacerlo inverosimil.
Total, vamos a dárselo al animal y que sea el animal quien destruye las balas.
Por qué?
Porque puedo.
Entonces vengo aquí.
Me voy a los animales que recordad que están en la carpeta, privamos animales y a los cuatro animales
les doy el escrit que lo he llamado CHEC colisiones.
Es que no quiero que lo tengan los enemigos, solo las balas y que me cuentas como queráis.
O sea, el comportamiento es simétrico, hay enemigos y hay balas, porque yo he dicho que los animales
son enemigos y que las pizzas son malas.
Pero si estuviera tirando granos de arroz, si hubiera por ahí una vieja andando, llamarle vieja al
enemigo, me da igual.
O tirad a la vieja a un grano de arroz o al revés, tirarle al grano de arroz.
La vieja da igual.
O sea, que estés creando el mundo que queréis.
De acuerdo.
Y eso es un poco la magia de los videojuegos.
De hecho, es una de las razones por las cuales os dije que los nombres de las variables pueden ser
súper concretos, como Spit o pueden ser Antonio Banderas, que lo he usado ya varias veces.
O sea, que más me da que sea Antonio Banderas, que sea Melanie Griffith o que sea Tom Cruise.
Las variables son o variables y lo que guardáis dentro de ellas es un poco lo que os da la gana.
Lo que pasa que si le dais nombres significativos spit, enemigos y demás, pues es más fácil que un
humano normal y corriente.
Lo entiendo, pero ya os digo, ya podríais programar con nombres de actores, actrices o series de
Netflix.
Si no habría ningún problema, podemos probar de hacer un juego solo usando variables de series de Netflix.
Igual nos explota la cabeza en un momento dado.
Entonces este CHEC colisiones recuerdo lo va a tener el enemigo y lo que voy a hacer es lo siguiente
el Starc y el adeu, sinceramente me dan igual.
Yo lo único que necesito es que mi enemigo sea capaz de chequear que algo ha entrado en su zona de peligro
en su trigger.
Hemos dicho que de los tres métodos Enter y Exit preferías utilizar enter, pues todos empiezan igual.
Y aquí hay más Horns que su puta madre.
Podéis empezar a hacer scroll igual cuando acabemos el curso.
Tres años después os habéis pulido todos los ojos.
Todo lo que empiece por ón.
Es un evento y un evento.
Quiere decir que vosotros no vais a llamar a ese método, como ocurría con el On Destroy on Boll o beisbol
que hablamos de ellos en su día?
Pues aquí lo mismo.
Todo lo que empieza por Sony es un evento y esto significa que en el futuro vosotros creáis eventos,
usad esta sintaxis que empiece por estos universales y no es algo típico de Unity en cualquier lenguaje
en Java mismo o más clik, o más entero o más, no sé qué hostias.
Todo lo que es on es cuando ha ocurrido un evento por algún lado y alguien necesita ser notificado de
ese evento.
Una suscripción al evento?
Pues aquí de todos los Horns que habéis buscáis, los son triggers, veis que hay 6.
Os he dicho que había tres y tres, tres para dos y tres para dos, de los tres para tres deditos parados
de un triguera.
Enter exit esté enter exit 2D.
Nosotros queremos el triguera enter normal y corriente.
Y fijaros que nada más lo implementamos.
Además de la excepción que se me pone en medio.
Este método triguera enter recibe un parámetro Bays aquel parámetro, el parámetro que recibe es el
colíder.
Os acordáis que el es lo que hemos añadido?
Ojo, si en lugar de usáis son triguera enter.
Usáis una colisión?
Es decir, la de la hostia física de verdad.
Los métodos son los mismos en el éxito ahí, pero cambia la asignatura, es decir, cambia el parámetro,
el parámetro de una intriga.
Eres un coley, pero el de la colisión es un colisión.
Qué diferencia hay?
El colíder es contra quien habéis chocado.
De hecho, ves que el nombre.
Colíder Hover es el objeto contra el que habéis chocado en este caso, si este scrip se lo habéis dado
al enemigo, al animal, este oder quién va a ser la bala en una colisión?
Enter El argumento del parámetro es el colisión, la colisión.
Por tanto, como parte de la colisión están los dos objetos el que choca y el que recibe, están los
dos.
Es la diferencia gorda en un trigger.
Es otro objeto.
Ha entrado en mi región prohibida del espacio, en mi trigger.
La colisiones, colisiones.
Dos personas han chocado y el Oder en este caso.
De hecho, a mí no me gusta llamarle Oder.
Siempre he considerado que es un muy mal nombre.
Yo les suelo llamar colisión, colisión o QOL, porque en esta colisión están los dos objetos al estar
el objeto y el objeto con el cual hemos chocado, y es la diferencia gorda que la colisión es entre
dos objetos y el triguera es otro objeto.
Ha entrado en mi región prohibida del espacio.
Nosotros utilizamos el primero y el segundo no?
Pero bueno, pues lo voy diciendo, porque el fallo más típico que me encuentro es esto que os acabo
de decir entonces.
Otro objeto extraño se mete en la zona prohibida del trigger del animal.
Pues solución a lo bestia.
Destruyo lo que ha entrado y me destruyo a mí mismo, que soy el animal o solución a lo bestia.
Fijaros algún destruí de disputo object disputo que Imhotep.
Si esto se arrastraba del animal, esto destruye el animal.
Y cómo destruyo el otro?
O Cubacel a que colíder oder se refiere al otro objeto contra el cual he colisionado?
Pues hacemos un destroy del Oder punto que iMovie a correr destruye la bala.
De hecho, no me gusta llamarle la bala porque podría ser el personaje, destruye lo otro.
Ahora habrá que arreglarlo.
Entonces, fijaros como primero y más importante, estais escribiendo una función que no es vuestra
en un thriller Enter.
No os creáis que es una función vuestra, es una función de Unity, del motor de Unity, de la API de
Unity, que vosotros os dejan utilizarla porque sois un mono geniol como un mono vigilador.
Vosotros podéis sobre escribir el código que vaya triguera entero.
En este caso, cuando se va a ejecutar este código Hon Trigger Enter se llamará automáticamente cuando
un objeto físico entre dentro del trigger del monje que tiene este script me refiero.
Vale, entonces fijaros que el triguera se llama automaticamente.
Nadie va a llamar a un tridente triguera interno.
Se invoca.
No hacéis un inbox, repiten automáticamente.
Es llamado como parte de la API de Unity, como se enseña el primer día en aquel gráfico donde salían
todos los métodos de Unity y sus respectivos órdenes.
Os acordáis?
Uno de ellos era On Triguera, Enter on trigger trigger, lo que sea, exit y demás.
Aquí importante, el poder es el otro objeto, el colíder contra el que habéis chocado o contra el que
el que ha entrado en vuestra zona de trigger.
Y aquí no me canso de decirlo, que la decisión que he decidido yo es que el check colisiones lo hace
el enemigo contra la bala.
O sea, es el enemigo quien se destruye a sí mismo y a la bala.
Pero si esto no hubierais arrastrado en lugar de al enemigo a la bala, qué diferencia habría con el
código?
Ninguno.
Lo único sería que el desgate mob destruiría la bala y destruiría el animal.
Punto pelota.
Esto sería lo único.
Entonces, si guardamos esto y sobre todo en el futuro, creo que todo el mundo autocompletado cuando
ha salido un triguera en todo el mundo le ha dado al tabulador.
Nadie lo ha escrito a mano.
Esto es importante porque no sería la primera vez que me encuentro con esto.
Eso me pasa por darme demasiada prisa.
Ves que la tele ha puesto minúscula?
No me funciona como te va a funcionar si el método de Junichi en mayusculas es que las mayúsculas minúsculas
lo mismo, no, esto es programación, esto no es el lenguaje.
Esto no es historia de España.
Vale que te lo cuentan igual en mayúscula, en minúscula en Versalles.
No, no, aquí el código hay que ser muy preciso y que si este de aquí.
La diferencia entre esto y esto es que esto es un evento y Unity me lo dice, es un evento, es un evento
que no vas a llamar tu, que el motor va a llamar automáticamente cuando le haga falta.
Esto de aquí no es un evento, es una función que os habéis inventado y que si nadie la llama no se
va a ejecutar.
Entonces esto es un fallo muy gordo cuando la asignatura, cuando el castellano se llama así, también
sea asignatura, cuando la cabecera de la función es con estas mayúsculas.
éstas, éstas, éstas y las otras tenéis que respetarla y por eso es súper importante que utilices el
autocompletar.
Vale, porque si no utilizáis el autocompletar, probablemente o alguna mayúscula esté mal o es privada
y la has puesto pública, hemos jodido o es 22. Ponéis que sea abucheando.
Me da igual no utilizar el autocompletar porque son los fallos que me encuentro normalmente de falta
de que como no usas el autocompletar y cuando veis el vídeo en casa.
Hostia, esto es mayúscula, minúscula y hasta la hemos liado.
Vale, entonces guardamos esto, me vengo para acá y con un poquito de suerte.
Si le damos al play, las balas deberían destruir el enemigo o era al revés?
Me da igual.
Fijaros disparará esta vez que me voy cargando las cosas por aquí lo veis que me van desapareciendo.
Aquí aparece una cosa de éstas que no llego.
Vale, ahora habrá que ver qué hacemos con los que no llegamos, pero lo veis que en teoría esto funciona.
Desaparecen todos los animales que hay por ahí.
Y si me quedo aquí, por supuesto, como mi personaje no es físico.
Veis que los animales me atraviesan a mí, al granjero, si el granjero.
Ahora hago la tontería de ponerle un colíder y un buey para que el motor de físicas sepa que está ahí.
Qué pasará cuando el enemigo llegue al granjero?
Morirá y morirá.
De hecho, hay todavía una cosa más chula que podéis hacer porque imagina que aquí, cuando habéis programado
esto aquí está muy claro quien choca, o sea contra quien choco, que es el enemigo.
Por qué?
Porque le he arrastrado el escrit.
Pero hostia, el poder que hay aquí podría ser que no fuera una bala.
Podría ser que lo fuera el propio escenario y hubiera una colisión con el escenario.
Sí, podría ser que lo fuera el personaje, el granjero.
Sí, es un truco que utilizamos mucho en Unity es si queréis que las colisiones sean contra objetos
específicos que cumplen cierta característica, marcándolos de algún modo.
Cómo?
Con etiquetas.
Os acordáis las TACs?
Os dije el primer día.
Pues un truquito que podemos hacer y que aquí es muy útil es vale.
Los enemigos de los animales.
Estos tendrán el scrip de colisiones.
Correcto, ningún problema.
Pero como sólo quiero que los animales en colisiones contra los proyectiles lo que voy a hacer es a
los cuatro proyectiles, les voy a dar una etiqueta.
Veís que de momento la etiqueta pone un target?
No hay etiqueta posible?
Sí, entonces voy a venir aquí.
Añadir etiqueta attack etiquetas.
Podéis añadir todas las que os dé la gana.
Sois libres de añadir todas las etiquetas que queráis.
Repito, para el que no miraba seleccionar el game mob GEC, la pizza o lo que sea, veis donde pone
TACC un target, añadir etiqueta Attar y os aparecerá este menú que tenéis aquí.
A partir de aquí, añadir todas las etiquetas que queráis.
Por ejemplo, yo voy a añadir una etiqueta muy típica bullet bala o proyectil.
Proyectaría, madre mía, con el perrito de las narices.
Entonces, si ahora tengo la etiqueta Proyectã y ahora crea una etiqueta, a quién se lo habéis dado?
A nadie, solo lo habéis creado, sabes?
Te has ido al Leroy Merlin?
Has comprado una caja de etiquetas?
Estupendo, todas ponen proyectíl.
A quién se la dais?
A quien os dé la gana.
Por ejemplo, si se la doy a la pizza, que es el padre, veis que ahora en el desplegable para proyectar
el que he creado antes BGI está, lo asignamos.
Si así lo asignas al padre.
Recordad, el sandwich también será proyectíl.
La kuki también será proyectíl.
La botella también será proyectíl porque son variadas.
Os acordáis?
Son variantes de Pfaff, como vimos ayer.
Esto quiere decir que si ahora me voy al código Vips siempre es el animal, porque el único que tiene
este escrit es el animal.
Pero podría ser que la colisión sea contra una bala o contra un enemigo, o contra enemigo contra enemigo.
Incluso podría ser la vaca contra otra vaca.
Esto parece los juegos del hambre.
Versión Bacas.
Entonces, si sólo queréis que el enemigo chequee la colisión contra una bala.
El truco que hacemos es el siguiente antes de destruir nada chequeamos y joder punto com per tac con
per tac y con lo que veis aquí la etiqueta proyectaría.
De hecho, igual a igual a cero no es vulgar o directamente no he dicho nada y punto, comparta, proyecta
y esto significa si el otro objeto contra el que el animal colisiona contiene la etiqueta proyectíl.
Aquí sí que ahora podéis decir una cosa el animal choca contra un proyectil.
Antes no sabía si era un proyectil.
Imagínate que fuera el suelo que tiene un triguera al suelo.
El animal destruiría el suelo y se caería todo el mundo en el ciberespacio.
Pero ahora estáis super seguros de que si se ejecuta, el otro objeto que hay por ahí pululando es un
proyectil.
Y si estáis seguros, pues estas dos líneas de destruir las añado dentro de Link y solo se va a considerar
la colisión entre animal y bala.
Veis que lo hemos conseguido gracias a las etiquetas, las etiquetas?
Creo que ya os lo dije el primer día son gratis, no pagan impuestos, son muy baratas.
Qué quiere decir esto que os vais a encontrar?
Que la gente crea etiquetas a punta pala y Unity.
Una para el personaje, para los enemigos, para las malas, para los recursos, para el escenario,
para cualquier cosa que se les pasa por la cabeza.
La gente suele crear etiquetas, tiene una desventaja y es que cada objeto sólo puede tener una etiqueta.
No podéis ser a la vez proyectíl y personaje o proyectil y enemigo.
Pero bueno, es una ventaja, es una desventaja menor, creo yo.
Gracias a esto, clasificando cada objeto en una categoría.
Pues ahora aquí, porque me ha dado por marcar estos cuatro objetos con proyectil, pero podríamos marcar
todos los enemigos con la palabra o con la etiqueta enemy.
Incluso si las balas se pudieran recoger del suelo, que en este caso no lo haremos, podríamos dejar
en el suelo una caja de balas que al entrar dentro de esa caja de balas en su trigger, el personaje
las recogiera y tuviera más balas.
Si sería exactamente lo mismo que tenéis aquí.
Ahora tenéis un trigger que la bala destruye al enemigo o viceversa, pero podríais tener una caja de
balas en el suelo donde el trigger.
Cuando el personaje con Tack Leger entrará en la zona de ese trigger, se recogieran las balas, se
destruyeron del suelo y el contador de balas se incrementará en cinco unidades.
La respuesta es sí.
Fijaros que la técnica es la misma, es la misma, la misma, la misma.
Cambia la aplicación de la técnica.
Esto quiere decir que si le damos al play, pues debería funcionar absolutamente igual.
Tenéis aquí el granjero, disparamos a ver donde salen las vacas.
Aquí hay una vaca.
Como vaca veis que se destruyen.
Lo veis que se van destruyendo las vacas?
Sí, sí.
Ahora me voy a la pizza y le quito la etiqueta proyectíl proyectíl.
Si se la quito.
Qué pasará cuando ahora me vaya y le dé al play cuando tire las pizzas, porque las pizzas seguirán
yendo para Mordor.
Pero las vacas van a seguir viviendo.
Dónde están las vacas?
Por Dios, mira, aquí tenéis una vaca.
No muere.
Por qué?
Porque no tengo la etiqueta.
Lo veis?
Ves que al final todo cuadra.
Si lo haces como toca.
Si no lo haces como toca, no cuadra nada.
Ya lo digo yo.
Pero cuando tenéis claros los conceptos y los aplicamos correctamente, ves que al final esto es dos
más dos.
No tiene mucho misterio.
Por qué me ha funcionado?
Porque si la etiqueta que le pongo a la pizza es de tipo proyectíl y mi código está chequeando contra
un proyectil, cuando tiene la etiqueta funciona.
Cuando no tiene la etiqueta no funciona.
Pero fin de la historia.
De acuerdo.
Acostumbrados a abusar de las etiquetas, podéis crear muchísimas etiquetas.
Son una muy buena práctica para poder reducir los problemas que suelen aparecer más adelante cuando
no está bien parido el asunto se.