Irregular position when instantiating clone during camera rotation?

I have a weapon dummy object sitting in front of my main camera (fps).
This dummy is a child of the main camera so it is intended that where the camera moves / rotates the dummy will correspond.
Using an array which is filled with a number of weapon prefabs, I am instantiating a particular weapon to the dummy object during weapon switching (i.e. when I switch weapons the previous clone is destroyed and the new one cloned to the dummy object.
I’m using the first person controls from mobile assets for rotating the camera.

The problem I’m having is that when I’m switching my weapons, the weapon object seems to be lagging slightly and is showing up in a slightly different position each time based on the current rotation direction of the camera. What I mean is, if I’m moving the camera at the same time as switching weapons, this is effecting where the weapon clone is showing up. I’m not sure what code to put up to get help with the problem as I’m not sure exactly what is causing the problem. Only thing I can think of is it is lagging when instantiating. Here is my code to instantiate the weapon and ensure it follows the dummy object. As you can see I’m setting the vector3’s and rotation and on Update are making sure the clone follows the parent.

public var myWeaponsArray:GameObject[];
public static var chosenWeapon:String;
public var clone:GameObject;

//******************
//sets the default weapon to the item in position zero of array
function Start(){
	chosenWeapon = "Weapon1";
	clone = Instantiate(myWeaponsArray[0], Vector3(transform.position.x,transform.position.y,transform.position.z), transform.rotation);
}

private var currentWeapon:String="";
//******************
function LoadWeapon (chosenWeapon) {
	if (currentWeapon!=chosenWeapon){
		switch (chosenWeapon){
			case ("Weapon1"):
			//instantiate bow in here
				Destroy(clone);
				clone = Instantiate(myWeaponsArray[0], Vector3(transform.position.x,transform.position.y,transform.position.z), transform.rotation);
				currentWeapon = "Weapon1";
				break;
			case ("Weapon2"):	
				Destroy(clone);
				clone = Instantiate(myWeaponsArray[1], Vector3(transform.position.x,transform.position.y,transform.position.z), transform.rotation);
				currentWeapon = "Weapon2";
				break;
		}	
  	}
}
//******************
//make the clone follow the camera
function Update (){
	//keeps updated the orientation of the weapon object to the parent object(main camera)
		clone.transform.parent = gameObject.transform;
}

In summary, my problem is the slight moving of my weapon to different positions when switching between weapons and then back again (i.e from weapon 1 to 2 and back to 1), whilst rotating the camera.

Any advice would be really appreciated.
Cheers Chris

Most likely you are calling LoadWeapon from some function that executes after the Update function, hence it is misplaced by a frame. Then, your Update function is setting the parent, which is not at all what you should be doing.

Just set the parent once, when you create the weapon, not every frame, and the problem should go away.