Sword Swing Collisions Triggering Multiple Times Instead of Once

So I have created a pretty nice rpg system for a project I’m working on. GUI xp bar, levels, stat updates, spells with cool downs, buffs, character movement and camera, enemies, fighting systems, AI, ect.

I have one problem that I’m not sure how to fix. When my character swings his sword the trigger collision detection works great, but sometimes, mostly when I’m a little too close to the enemy, it triggers multiple times, usually 2 or 3 instead of just once.

Then the extra instantiated blood particle effects sometimes don’t trigger until a little later usually after the player touches them. I have to use a rigidbody for my character due to the diablo like controls. The instantiated particles always spawn underneath the enemy also and I’m not sure if I’m doing something wrong.

If you need more code I can supply it, but I’m pretty sure the code below is what’s causing the problems. Is there another way to swing a sword other than how I’m doing it below?

I have an animation with the collider attached to the sword with is trigger checked.

If someone could help me out that’d be great, I have done plenty of my own work just a little stuck on this part. Thanks!

In JS

function OnTriggerExit(other: Collider) 
{ 
        if (other.CompareTag("Sword")) 
        { 
        	
        	playersStats = player.GetComponent(XPBar);      	     
        	health -= playersStats.playersAttack - defense * .1;
        	
        	// create a new blood splat
	var instantiatedbloodParticle : Rigidbody = Instantiate 

       (bloodParticle, transform.position, transform.rotation);
			
			
        
        }
      }

I normally add a boolean to prevent multiple events from the same event

var isTriggered:boolean;

function OnTriggerExit(other: Collider)
{ 
    if (other.CompareTag("Sword")&&!isTriggered) 
    { 
        isTriggered=true;
        SwordSwing();
    }
}
function SwordSwing()
{
    playersStats = player.GetComponent(XPBar);              
    health -= playersStats.playersAttack - defense * .1;

    // create a new blood splat
    var instantiatedbloodParticle : Rigidbody = Instantiate(bloodParticle, transform.position, transform.rotation);
    isTriggered=false;
}