domingo, 11 de enero de 2015

Mejoras en el comportamiento del veneno

En la última entrada sobre el comportamiento del veneno expliqué el problema que tenía en el movimiento vertical del veneno al adaptarse a los desniveles del terreno, aunque creo que sin vídeo no se entiende tan bien. En este artículo hay vídeo de cual es el problema y cómo funciona después de haberlo solucionado.



He cambiado la forma de realizar el movimiento interno del enemigo, antes se añadía un movimiento de seno (en función del tiempo) a la altura, de esa forma se obtenía ese movimiento de bamboleo, pero al cambiar la altura del terreno, el personaje también la cambia de forma brusca (ya que se mide la altura del terreno cada medio segundo para no tirar rayos continuamente). Ahora el bamboleo se realiza con iTween, con una función de suavizado por seno, y el cambio de altura se nota en el objetivo del siguiente movimiento. Es decir, ahora le digo: sube a altura 8 a velocidad 1, y cuando llega a 8 digo: baja a altura 6 a velocidad 1. Si la altura del suelo hubiera cambiado se nota en esas órdenes.


Hay otro pequeño añadido, esa velocidad no es siempre la misma, sino que depende de la diferencia de altura a recorrer para que si hay mucho desnivel no se lo tome con tanta calma. El bamboleo antes tenía la misma velocidad si el enemigo estaba normal o enfadado, ahora el movimiento interno es más rápido si el veneno está enfadado, encajando mejor con el resto de su comportamiento.

También he cambiado ya el momento de comprobar la distancia de los enemigos al personaje para activarlos o no, y la evaluación de las IA del veneno. Hasta ahora las distancias se evaluaban en el primer frame cada segundo y las IA cada medio segundo. Coincidía que había un frame donde se evaluaban todas las distancias y todas las IA activas. Ahora se va evaluando 1 distancia y 2 IA por frame, pero como el número de venenos varía (nos los cargamos), pasaría que al avanzar el juego los enemigos evaluarían su IA demasiado a menudo, por lo que he hecho un pequeño sistema para que al acabar de evaluar todos, no vuelva a empezar hasta que ha pasado el tiempo estipulado para cada acción (1 segundo o medio segundo). No he notado un gran impacto en los FPS, pero supongo que ayudará a que no haya momentos con bajones puntuales.

No hay comentarios :

Publicar un comentario