Una vez hemos creado los items, vamos a crear las balas. Para crear las balas vamos a utilizar unas pelotas que van a ser las balas. Y vamos a contener un contenedor de balas que se va a encargar de controlar las balas que coinciden contra cualquier personaje. Entonces para ello, vamos a crear a parte de las balas, un script de tipo hongo, donde le diremos el tipo de balas, si es de enemigo o si es de player, y con parámetro de la, de la, de la vida, de la bala, y con parámetros de velocidad. Aquí vemos también un prefab de explosión y aquí el controller. El prefab de explosión es porque cuando bajamos el enemigo final, querremos que haya una bala que sea de tipo explosiva. Entonces, simplemente utilizaremos el mismo, el mismo tipo de bala, pero reteniendo sus propiedades. Entonces, para ello vamos a crear un objeto de tipo una bola, una esfera, y le vamos a agregar el, el Ammo Script. Vamos a Unity, vamos a crear 3D object de tipo esfera, esto va a ser la, nuestro disparo. Evidentemente no es lo que voy a ver acá. Voy a modificar la escala. Para pintarla no voy a utilizar la bola sino voy a utilizar un trail. Ahí es diferente, y ahora tengo el renderer. [AUDIO_EN_BLANCO] Le digo que quiero una bala con un material transparente. Entonces, material, requerimos material, otro trail, una semitransparencia, en el trail le vamos a dar la transparencia. Entonces en el trail ya vemos el material que hemos creado, y le ponemos los colores. [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO] Y ahora vemos esta bala, y vemos cómo se mueve el trail. Le vamos a poner transparente. [AUDIO_EN_BLANCO] Lo vamos a llamar Ammo, y al tamaño del trail. [AUDIO_EN_BLANCO] Y ahora lo movemos. [AUDIO_EN_BLANCO] Vemos cómo va dibujando el trail, y al tiempo va [INAUDIBLE]. Esto lo podemos ajustar. Vale. Entonces. [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO] Lo que vamos a hacer ahora es darle el componente de item ammo, pero de Ammo. Entonces, vamos a agregar un nuevo script de tipo C#, le vamos a llamar Ammo. [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO] Entonces a este Ammo le vamos a agregar las siguientes propiedades. A este Ammo vamos a crearle primero, a este Ammo vamos a agregarle primero el tipo de arma que es, y si es del player o del enemigo. Le vamos a hacer nuevamente el recuperado hacia el player o el enemigo. [AUDIO_EN_BLANCO] Entonces, la, cada bala queremos que tenga una velocidad, entonces va a ser tipo pública. Va a ser, vamos a darle acá el tipo. [AUDIO_EN_BLANCO] A la velocidad vamos a agregarle también tipo, vamos a crear una variable que sea tipo lifetime, tipo float, y por defecto va a ser de 3 segundos, a gusto lo podemos ajustar. Y vamos a tener el current time. Entonces, current time inicial, va a ser 0, para dispararla le pasaremos un vector dirección. Entonces lo que haremos será a este objeto cogeremos un rigid body, y al vector de velocidad del rigid body le pasaremos la dirección que nos han pasado por la velocidad de nuestra bala. [AUDIO_EN_BLANCO] Entonces si el current time, en update, si el current time es mayor o igual que el de el lifetime, destruiremos la bala. Entonces, va a quedar [INAUDIBLE] Avanzaremos el current time según el elapsed time, del delta time; si el current time es mayor o igual que el lifetime destruimos la bala. Para destruir la bala simplemente game object, punto destroy, this.game object. Bien. Entonces, on collision enter, en el momento que colisione la bala en contra de un objeto. [AUDIO_EN_BLANCO] Si other.tag igual a player, y m type igual a enemy, enemy, le diremos al player. [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO] Kill. Entonces. [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO] Y .gameobject.tag, y aquí game object. Si el, si el otro game object que he colisionado eh, el tag es el player, quiere decir que yo soy una bala de tipo enemigo, quiere decir que tengo que matarlo. Entonces, para ello llamo al método kill del player; como no está agregado, lo voy a agregar. Kill. Le quito una vida. Y haremos un restart que luego, que ya implementaremos. [AUDIO_EN_BLANCO] Vale. Entonces comprobamos. Entonces ahora mismo tenemos el componente bala. Entonces la bala, voy a llamar a Ammo player,le voy a dar aquí un rigid body, le voy a decir que no use la gravedad, y lo voy a añadir al componente que hemos creado que es Ammo, esta va a ser de tipo player, el tipo de vida habíamos dicho que es 3, la velocidad es 10, y el current time es 0. Bien, esto sería una bala, pero para tener varias balas voy a agregar un Ammo container. Para agregar un Ammo container voy a agregar un nuevo asesor de script, vamos a container. [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO] Entonces el Ammo container va a tener un objeto donde se van a crear las balas, y el listado de balas. Entonces para un listado ya sabéis, entonces voy a usar el using system collections.generic. [AUDIO_EN_BLANCO] Entonces, este contenedor de balas va a ser de cualquier tipo, de balas de player o de enemigos. [AUDIO_EN_BLANCO] Luego distribuyo el contenedor de balas, de dónde salen las balas, y entonces le agrego un método que va a ser add Ammo, donde le voy a pasar un prefab, y voy a hacer en el Ammo una posición y una dirección. Entonces, lo que voy a hacer es construir una bala a partir del prefab, se deja un espacio, en la posición que te pasan. [AUDIO_EN_BLANCO] Colocas en identidad, entonces esta es la nueva bala, y le voy a decir que el padre de esta bala va a ser el destroyer objects. Este objeto, es un objeto que vamos a crear todos los objetos que queramos en la forma dinámica cuando se juega, nos quedamos aquí dentro, y así cuando reiniciemos el nivel eliminaremos todos los objetos que hay ahí dentro porque los han matado, porque se ha acabado el nivel o por lo que sea. Entonces, una forma fácil de eliminar los elementos que no tienen que estar en el principio del nivel. Entonces, tenemos la bala, y de la bala sacamos el Ammo. Esto será Ammo de object, Ammo de object, Ammo, y añadimos la bala a nuestro vector de balas, a nuestra lista de balas. Así podemos eh, luego cuando damos el restart. [AUDIO_EN_BLANCO] Recorreremos todas las balas. [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO] Si la bala es diferente en 1, pues nos ha eliminado previamente, destruimos el game object de la bala. Y volvemos a inicializar el vector de balas. Entonces, con eso habremos reiniciado las balas. Falta una cosa más y es a la bala. [AUDIO_EN_BLANCO] Le decimos que se dispare en la dirección del vector que le hemos pasado.