Rotate RayCast/Object right on instantiation?

Hey, so I was wondering how I could rotate the direction of the raycast to the left or the projectile itself without effecting the flight direction. The problem I am facing is that the raycast is sticking out to the left, meaning that it wont ditect a hit when the particle flys towards something, only objects 1.5f to the right of it. If someone could help, I would be so grateful…thanks in advance!

	//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 = 20;
	
	
	//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.
 
   	Destroy (gameObject, expireTime);
 
	}
	
	// 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.
		
		Debug.DrawRay( myTransform.position, myTransform.forward * range, Color.red );
 		if(Physics.Raycast(myTransform.position,myTransform.forward, out hit, range) && expended == false)
 		{
			//If the collider has the tag of Floor then..
			
			Debug.Log( "Ray Hit (floorMud) : " + hit.collider.transform.tag );
			{
				expended = true;
				
				
				//Instantiate an explosion effect.
				
				Instantiate(mudParticle, hit.point, Quaternion.identity);
				
				
				//Make the projectile become invisible.
				
				myTransform.renderer.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);
	}
}

You are translating your object to the world left. See the ‘Vector3.left’:

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

But your Raycast is coming out of the forward of the object:

if(Physics.Raycast(myTransform.position,myTransform.forward, out hit, range)

So you have to bring these into alignment. You can solve this in several ways. Since projectile is a sphere, you can rotate the object so that the forward of the object is facing left. On line 80 right after the Instantiate() you can just Rotate it on the Y axis by 90 degrees so the forward of the vector is facing world left.

transform.Rotate(0.0, 90.0, 0.0);

Here is another way to face world left:

transform.LookAt(transform.position + Vector3.left);

An alternate solution is to change the Raycast() so that it points left:

if(Physics.Raycast(transform.position,Vector3.left, out hit, range)

And finally my favorite is to first use either of the two methods above to face the object left and then change the translate so that the object moves in the the forward direction.

transform.Translate(transform.forward * projectileSpeed * Time.deltaTime); 

One quick way of determining what is forward on the sphere is to place a second child game object on the front of your sphere: 1) Add a new game object like a cube, 2) put in the same position as your sphere, 3) size it down, 4) move it forward on the Z axis until it just pokes out of the sphere, and 5) make it a child of the sphere.