Make Raycast shot the ray slower?

Hi , I’ve attached a Raycast function to my gun in order to tell it where do i hit and where to create the particle effect. And after that I’ve created an animation to it so it can look more realistic , but you can guess that i can shoot and apply damage faster then i can run the animation , so i want to make the raycast to take a 1second break until he can shoot again…
earlier today i followed a tutorial about making youre enemy attack slower and i thought why not do the same to the raycast function…is it posible? if it is how to do it?
Theres my Raycast function :
#pragma strict

var hitEffect : Transform;
var TheDamage = 100;

function Update ()
{
		var hit : RaycastHit;
		var ray : Ray = Camera.main.ScreenPointToRay(Vector3(Screen.width * 0.5, Screen.height * 0.5, 0));
	
		if(Input.GetMouseButtonDown(0))
		{

			
		if (Physics.Raycast (ray, hit, 100)) // 100 = How far the bullet can get , means how far the bullet reaches from you and on...
		{

			var particleClone = Instantiate(hitEffect, hit.point, Quaternion.LookRotation(hit.normal));
			Destroy(particleClone.gameObject, 2); 
			hit.transform.SendMessage("ApplyDamage", TheDamage, SendMessageOptions.DontRequireReceiver);
		}
			
		    
		}

}

And theres a similar code applied to my enemy :

var Distance;
var Target : Transform;
var lookAtDistance = 25.0;
var chaseRange = 15.0;
var AttackRange = 1.5;
var moveSpeed = 5.0;
var Damping = 6.0;
var Controller : CharacterController;
var gravity : float = 20.0;
var attackRepeatTime = 2;
var attackTime : float;
private var MoveDirection : Vector3 = Vector3.zero;

function Start ()
{
 attackTime = Time.time;
}

function Update()
{
	Distance = Vector3.Distance (Target.position, transform.position);
	
	if(Distance < lookAtDistance)
	{		
		lookAt();
	}
	
	if(Distance > lookAtDistance)
	{
		renderer.material.color = Color.green;
	}
	if (Distance < AttackRange)
	{
		attack();
	}
	else if(Distance < chaseRange)
	{
	    
		chase();
	}
}

function lookAt()
{
	renderer.material.color = Color.yellow;
	var rotation = Quaternion.LookRotation(Target.position - transform.position);
	transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
	
}

function chase()
{
	renderer.material.color = Color.red;
	moveDirection = transform.forward;
	moveDirection *= moveSpeed;
	
	moveDirection.y -= gravity * Time.deltaTime;
	Controller.Move(moveDirection * Time.deltaTime);
}

function attack()
{
	if(Time.time > attackTime)
	{
	Debug.Log ("Attack");
	attackTime = Time.time + attackRepeatTime;
	
	}
	
}

function ApplyDamage()
{
	lookAtDistance += 30;
	chaseRange += 30;
	moveSpeed += 1;
}

The code that make him slower is in the attack function…

so what do i need to add to my raycast function in order to make it shoot\applydamage with a delay of 1 second?

Sadly no…
I have same wish, but I didn’t found any tutorials about ‘make raycast slower’.

Well, If you want the damage from the raycast to be dealt after a certain interval AFTER THE HIT, you need to assign that in the enemy script. For example: In the Enemy Script:
void GetHit() {Invoke("TakeDamage"), 1f} / TakeDamage() {health -= damage}. Invoke allows for calling a method/function with a delay (1f (f for float)= 1 second)

You have no cooldown on your script, and your raycast hit is being ran on every single frame.

You’d want to add some form of a cooldown, like so:

var hitEffect : Transform;
var TheDamage = 100;
var fireRate = 0.5; // Time in seconds between shots
private var nextFireTime = 0.0;

function Update ()
{
    var hit : RaycastHit;
    var ray : Ray = Camera.main.ScreenPointToRay(Vector3(Screen.width * 0.5, Screen.height * 0.5, 0));
    
    if(Input.GetMouseButtonDown(0) && Time.time >= nextFireTime)
    {
        nextFireTime = Time.time + fireRate; // Set next allowed fire time
        
        if (Physics.Raycast (ray, hit, 100))
        {
            var particleClone = Instantiate(hitEffect, hit.point, Quaternion.LookRotation(hit.normal));
            Destroy(particleClone.gameObject, 2); 
            hit.transform.SendMessage("ApplyDamage", TheDamage, SendMessageOptions.DontRequireReceiver);
        }
    }
}