Particle Not Instantiating

Hey, I was wondering if someone could help me on this script I’ve been working on, the problem i have encountered is that the particle that I have attached wont instantiate. If someone could help me, then that would be much appreciated!

//Variables Start___________________________________


//The explosion effect is attached to this
//in the inspector

public GameObject mudParticle;


//A quick reference.

private Transform myTransform;


//The projectiles flight speed.

private float projectileSpeed = 200;


//Prevent the projectile from causing
//further harm once it has hit something.

private bool expended = false;


//A ray projected in front of the projectile
//to see if it will hit a recognisable collider.

private RaycastHit hit;


//The range of that ray.

private float range = 1.5f;


//The life span of the projectile.

private float expireTime = 10;


//Variables End_____________________________________

// Use this for initialization
void Start () 
{
   myTransform = transform;

   //As soon as the projectile is created start a countdown
   //to destroy it.

   StartCoroutine(DestroyMyselfAfterSomeTime());
}

// Update is called once per frame
void Update () 
{
   //Translate the projectile in the up direction (the pointed
   //end of the projectile).

   myTransform.Translate(Vector3.left * projectileSpeed * Time.deltaTime);


   //If the ray hits something then execute this code.

   if(Physics.Raycast(myTransform.position,myTransform.forward, out hit, range) &&
      expended == false)
   {
     //If the collider has the tag of Floor then..

     if(hit.transform.tag == "floorMud")
     {
      expended = true;


      //Instantiate an explosion effect.

      Instantiate(mudParticle, hit.point, Quaternion.identity);


      //Make the projectile become invisible.

      myTransform.renderer.enabled = false;


      //Turn off the light. The halo will also disappear.

      myTransform.light.enabled = false;
     }
   }
}


IEnumerator DestroyMyselfAfterSomeTime()
{
   //Wait for the timer to count up to the expireTime
   //and then destroy the projectile.

   yield return new WaitForSeconds(expireTime);

   Destroy(myTransform.gameObject);
}

}

Try this:

void Start()
{
   myTransform = transform;
 
   //As soon as the projectile is created start a countdown
   //to destroy it.
 
   Destroy (gameObject, expireTime);

}