Instantiated clones arent behaving the same as the prefab

(video of problem: link text)

I have a prefab that is tagged rotatewithPlayer, when I instantiate the prefab, they are positioned randomly, but are at set heights, and face the camera. Here is my code snippet.

`for (i = 0; i < maxTrees; i++){

		randX = Random.Range(minX,maxX);
		randZ = Random.Range(minZ,maxZ);
		Instantiate(tree1, new Vector3(randX,12.2f,randZ), transform.rotation);`

and in my player controller script, i iterate through an array of all the objects that are tagged rotatewithPlayer and turn them 90 degrees accordingly. And the code snippet…

Start () {
		controller = GetComponent<CharacterController>();
		rotate_WithPlayer = GameObject.FindGameObjectsWithTag("rotateWithPlayer");
	}//end start
	
	void Update () {
		//some code
		if (Input.GetKeyDown("q")){
			//rotate tagged objects 90deg left
			foreach (GameObject x in rotate_WithPlayer){
				x.transform.Rotate(0,-90,0,Space.World);
			}
		}if (Input.GetKeyDown("e")){
			//rotate tagged objects 90deg right
			foreach (GameObject x in rotate_WithPlayer){
				x.transform.Rotate(0,90,0,Space.World);

`
All of the tagged objects, when placed in the scene manually will rotate with the player. but the ones instantiated by the above script do not rotate at all.

The game im making is 2d in a 3d world, and its constrained to 90degree turns. every object is a texture on a plane. when the player turns right, all of the tagged objects should rotate 90 degrees in place so that they are all still visible to the player(camera). The script seems to work properly on the manually placed prefabs, but not the instantiated ones. Also, I’ve found that if I copy/paste my movement script into a new script file and use that on my the player, that the instantiated object will then rotate with the player as intended, but when unity regains focus (after i switch to another window) the instantiated objects dont rotate. im not sure why it seemingly works, then doesnt.
any help or insight would be greatly appreciated.
ps. im a newbie so, if i havent provided enough info please excuse me, and if its something really simple, then i appologize

Its very difficult to determine your issue from the given, what I gather is that they instantiate at an odd rotation but then continue on with the rotation script as intended? If that is the case I think its because of your

Instantiate(tree1, new Vector3(randX,12.2f,randZ), transform.rotation);

Try this:

Instantiate(tree1, new Vector3(randX,12.2f,randZ), Quaternion.Identity);

The quaternion.identity will apply the prefabs rotation whereas transform.rotation was using the rotation of whatever gameobject the script is attached to.