adding delay in script

so i’m quite new to unity scripting and was trying to add a delay to a gun shooting script i have. its for a crappy vr project and so I managed to make it work with the vive controller but the bullets come out too fast, was wondering if someone could help me IN DETAIL with this, thanks.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpawnObjectOnButtonPressedScript : MonoBehaviour
{
public GameObject Bullet_Emitter;
public VRTK.VRTK_ControllerEvents controllerEvents;
public GameObject Bullet;
public float Bullet_Forward_Force;

void Update ()
{
	if (Input.GetButton("Fire1") || controllerEvents.triggerPressed)
	{
		GameObject Temporary_Bullet_Handler;
		Temporary_Bullet_Handler = Instantiate(Bullet,Bullet_Emitter.transform.position,Bullet_Emitter.transform.rotation) as GameObject;

		Rigidbody Temporary_RigidBody;
		Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent<Rigidbody>();

		Temporary_RigidBody.AddForce(transform.right * Bullet_Forward_Force);

		Destroy(Temporary_Bullet_Handler, 3.0f);
	}
}

}

Try the Invoke command. Sample code in the link is what you want (unless you just want to slow down the shot speed which is set in Bullet_Forward_Force).
https://docs.unity3d.com/ScriptReference/MonoBehaviour.Invoke.html

this is what I came up with using the invoke command, im pretty sure I did something wrong because I get quite a few errors such as ‘Keyword void cannot be used in this context’ and unexpected symbols.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpawnObjectOnButtonPressedScript : MonoBehaviour
{
public GameObject Bullet_Emitter;
public VRTK.VRTK_ControllerEvents controllerEvents;
public GameObject Bullet;
public float Bullet_Forward_Force;

void Start ()
{
	Invoke{"LaunchProjectile", 2);
}

	void LaunchProjectile()
{
	if (Input.GetButton("Fire1") || controllerEvents.triggerPressed)
	{
		GameObject Temporary_Bullet_Handler;
		Temporary_Bullet_Handler = Instantiate(Bullet,Bullet_Emitter.transform.position,Bullet_Emitter.transform.rotation) as GameObject;

		Rigidbody Temporary_RigidBody;
		Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent<Rigidbody>();

		Temporary_RigidBody.AddForce(transform.right * Bullet_Forward_Force);

		Destroy(Temporary_Bullet_Handler, 3.0f);
	}
}

}

To add a wait function to your script, you will need to use an IEnumerator function.
I believe this is the script you need.

IEnumerator wait() {
	// The wait function in the IEnumerator
	yield return new WaitForSeconds(2);
}

void example() {
	// Do the function
	StartCoroutine(wait());
}