Una vez que el protagonista lanza
llamaradas, y que el veneno se mueve y embiste falta que eso sirva
para algo. Hay que detectar si el veneno consigue golpear al
protagonista, o la llama al veneno, y en ese caso bajar vida, hacer
ver al jugador que eso ha sucedido, etc.
En este caso es un poco más fácil que
en la versión final, ya que ahora tenemos fuego, externo al cuerpo
del protagonista, partículas que pueden chocar o no con el veneno.
Aquí las reglas son claras, si una partícula de fuego colisiona con
el veneno, sufre daño. Si el protagonista colisiona con el veneno,
el protagonista sufre daño. Pero en el caso de atacar con espada, si
forma parte de la malla del personaje y van las animaciones juntas
tendré problemas. ¿Cómo detectas si al atacar has dado con la
espada o con otra parte del cuerpo al veneno? Si estás atacando y
das con la espada es normal que el veneno sufra daño, pero ¿Y si el
veneno embiste y choca contra la espada del héroe quieto? Sería muy
raro que dejando al personaje quieto el veneno se fuera dañando al
chocarse contra la espada. Con todo esto tendré que pegarme, ahora
voy a volver a lo que ya he resuelto.
Por un lado el sistema de partículas tiene una sección para las colisiones. Las activo, pongo que sean en espacio de mundo, que mande mensaje de colisión, y pongo una máscara para que solo calcule colisiones contra los enemigos.
De esta forma las partículas notifican
colisiones al veneno, y en el script de IA del veneno puedo tener un
método OnParticleCollision con el que ejecutar lo necesario. En este
caso bajar la vida del veneno, hacer que se menee y si ya está en
las últimas que las palme. Puedo utilizar el método
onParticleCollision, ya que las únicas partículas del juego que
producen colisiones son las del fuego que son dañinas, sino tendría
que hacer comprobaciones de qué sistema de partículas las emite o
ponerlas en una capa o un tag.
Por otro lado si el veneno choca contra
el héroe también lo detecto desde la inteligencia del veneno. Se
necesita también que las partes del personajes tengan Rigidbody y
estén marcadas como kinemáticas. Funciona mejor así, ya que el
veneno tiene un sphere collider, y es más fácil detectar allí las
colisiones, además que ya comprobaba como parte de la inteligencia
artificial los choques con paredes por ejemplo. Así que cuando el
veneno detecta colisión con el personaje informa al persoje de la
colisión, y ya es el héroe quien activa el proceso de bajar salud,
mostrar por pantalla que está herido, reproducir sonido...
No hay comentarios :
Publicar un comentario