// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { //REFERENCIAS enemy = animator.gameObject.GetComponentInParent <MELEE_enemy>(); target = enemy.target; forceApplier = animator.gameObject.GetComponentInParent <ForceApplier>(); //-ATTACK SETUP- enemy.transform.LookAt(target.transform.position); //Ignora la colisión entre el enemigo y el objetivo del ataque para que no obstaculice la embestida Physics.IgnoreCollision(target.GetComponent <CharacterController>(), enemy.GetComponent <CharacterController>(), true); //Acto seguido, activa el trigger que es el que se encargará de gestionar si el ataque ha golpeado, su daño, knockback, etc. enemy.attackCollider.enabled = true; //Y finalmente reemplazamos el daño 'default' por el daño de este ataque en concreto. enemy.damage = attackDamage; enemy.isVulnerable = false; //-ATTACK ACTION- //Una vez se han establecido las condiciones para el ataque, se impulsa al enemigo en dirección a su objetivo, con una fuerza igual a 'attackImpulse' forceApplier.AddImpact(new Vector3(enemy.transform.forward.x, 0, enemy.transform.forward.z), attackImpulse); if (enemy.weapon != null) { enemy.weapon.GetComponentInChildren <EnemyMeleeWeapon>().damage = attackDamage; enemy.weapon.transform.LookAt(target.transform.position); enemy.weapon.GetComponentInChildren <Animator>().SetTrigger("Attack"); //ESTO ESTA FEO Y HAY QUE HACERLO MAS BONITO } }
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { //Una vez se ha completado el ataque, levantamos todas las condiciones especiales que se dieron para este ataque. animator.SetBool("isAttacking", false); enemy.isVulnerable = true; Physics.IgnoreCollision(target.GetComponent <CharacterController>(), enemy.GetComponent <CharacterController>(), false); enemy.attackCollider.enabled = false; }