Relative Rotation

I am trying to create a tank enemy in my game, and I want it to have a linear turret rotation speed, so I´m trying to calculate the relative rotation between the tank and it´s turret so I can make it point to it´s target ( the player )

below is the code I have:

	void Update () {
		
		// this is just a sample code to change the tank´s rotation so I can test the code
		float s = Time.deltaTime * 10f;
		this.transform.position += this.transform.forward * s; // this would make it move forward
		this.transform.forward = Quaternion.AngleAxis( 45*Time.deltaTime, Vector3.up) * this.transform.forward; // this makes it rotate a little
		
		Camera cam = Camera.mainCamera;
		
		Vector3 dif = cam.transform.position - this.transform.position; // this will save a vector pointing to player
		dif.Normalize(); // this is so that my vector would have the some length as the forward vector
		dif = dif - this.transform.forward; // this is what I thought would work
		
		float ay = Mathf.Atan2( dif.x, dif.z ) * 180f / Mathf.PI; // this code works fine if the tank is stopped
		_turret.localEulerAngles = new Vector3( -90, ay, 0 );
	}

the turret should be seperate the hull and just attached.

Rotate the turret towards the target by using

transform.RotateTowards(current, target);

the hull shouldnt factor into it.

Or are you trying to make the hull point towards the enemy in which case

take the transform of the hull and rotate towards the enemy

or your trying to rotate the hull the match the turrets vector which is again

rotatetowards(current,turretsVector)