Logre hacer que los enemigos cambiaran de animacion dependiendo de a que direccion se dirijan.
Para ello el metodo update de enemigos lo tengo asi:
private void Update()
{
direction = player.transform.position - transform.position;
directionUnit = (Vector3)direction / direction.magnitude;
transform.position += directionUnit * Time.deltaTime * enemySpeed;
angle = Mathf.Atan2(directionUnit.y, directionUnit.x) * Mathf.Rad2Deg;
anim.SetFloat("angle", angle);
}
Genero el angulo en grados a apartir de la direccion unitaria, La direccion unitaria esta dada por el vector direccion dividida la magnitud del vector. El angulo se genera con un arcotangente.
Esta funcion genera como resultado en el 1er y 2do cuadrante del plano cartesiano de 0 a 180.
En el 3er y 4to cuadrante del plano cartesiano de -180 a 0.
En el animator agregue un parametro “angle” y organice las animaciones asi:
Default State = EnemyFront
Desde any State:
Transicion EnemyUp con 45 < angle < 135
Transicion EnemyRight con -45 < angle < 45
Transicion EnemyFront con -135 < angle < -45
Y para hacer la transicion a EnemyLeft la hago desde dos partes:
Desde EnemyUp con 135 < angle < 180
Desde EnemyFront -180 < angle < -135
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?