Things still spawn works when should be paused

Hey Guys, my issue is the camera continues to rotate when it shouldn’t,

[RequireComponent (typeof(CharacterController))]
public class PlayerController : MonoBehaviour {
	
	public float PlayerHealth = 100.0f;
	public float movementSpeed = 10.0f;
	public float mouseSensitivity = 3.0f;
	public float verticalRotation = 0;
	public float udRange = 60.0f;
	public float verticalVelocity = 0;
	public float jumpSpeed = 5.0f;
	public bool paused = false;
	
	
	CharacterController cc;
	// Use this for initialization
	void Start () {
	Screen.lockCursor = true;
		
	}
	
	// Update is called once per frame
	if (!paused == true){
		Movement();
		if (Input.GetKeyDown(KeyCode.P))
		{
			paused = true;
		}
	}else
	{
		Time.timeScale = 0.0f;
		if (Input.GetKeyDown(KeyCode.P) && paused == true)
		{
			paused = false;
			Time.timeScale = 1.0f;
		}
	}
	
	void Movement() {
		
	cc = GetComponent<CharacterController>();
	
	if (Input.GetKeyDown(KeyCode.E))
		{
		PlayerHealth -= 10.0f;
		}
		//Mouse
		//Rotation
		float rotLR = Input.GetAxis("Mouse X") * mouseSensitivity;
		verticalRotation -= Input.GetAxis("Mouse Y") * mouseSensitivity;
		
		transform.Rotate(0 ,rotLR ,0);
		verticalRotation = Mathf.Clamp(verticalRotation, -udRange, udRange);
		
		Camera.main.transform.localRotation = Quaternion.Euler(verticalRotation, 0, 0);
		//mouse end
		
		
		
		if (cc.isGrounded)
		{
			if (Input.GetButtonDown("Jump")){
			verticalVelocity = jumpSpeed;
				movementSpeed = 3.0f;
			}
			else{
				movementSpeed = 10.0f;
			}
			
			if (Input.GetKey(KeyCode.LeftShift))
			{
				movementSpeed = 15.0f;
			}else{
				movementSpeed = 10.0f;
			}
		}
		//Movement
		float forwardSpeed = Input.GetAxis("Vertical") * movementSpeed;
		float sideSpeed = Input.GetAxis("Horizontal") * movementSpeed;
		
		//Velcity
		verticalVelocity += Physics.gravity.y * Time.deltaTime;
		Vector3 speed = new Vector3(sideSpeed ,verticalVelocity, forwardSpeed);
		
		speed = transform.rotation * speed;
		
		cc.Move( speed * Time.deltaTime );
		
		
	}
}

Now it still instantiates and object even when paused

public class FPS_shooting : PlayerController {
	
	public GameObject bullet_Prefab;
	//public GameObject debris_Prefab;
	public float cooldown = 0.8f;
	public float cooldownRemaining = 0;
	public float bulletImpulse = 20f;
	public float range = 100.0f;
	
	
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		if (!paused == true)
		{
		cooldownRemaining -= Time.deltaTime;
		if (Input.GetButton("Fire1") && cooldownRemaining <= 0)
		{
			cooldownRemaining = cooldown;
			Camera cam = Camera.main;
			GameObject theBullet = (GameObject)Instantiate(bullet_Prefab, cam.transform.position + cam.transform.forward, cam.transform.rotation);
			theBullet.rigidbody.AddForce(cam.transform.forward * bulletImpulse, ForceMode.Impulse);
		}
		
		if (Input.GetButtonDown("Fire2") && cooldownRemaining <= 0)
		{
			cooldownRemaining = cooldown;
			Camera cam = Camera.main;
			GameObject theBullet = (GameObject)Instantiate(bullet_Prefab, cam.transform.position + cam.transform.forward, cam.transform.rotation);
			theBullet.rigidbody.AddForce(cam.transform.forward * bulletImpulse * 1.5f, ForceMode.Impulse);
				
			
		}
		
	
		}
	}
}

Update is still called regardless of the setting of Time.timeScale, in fact anything that is framerate independent will fire. Time.timeScale does not “pause” the game, it only stops framerate dependent functions from firing, like physics. You will have to implement some kind of pausing logic into your functions for everything to be synchronized. Also, if you are manipulating Time.timeScale, those calls should be fired within the same statement that you set paused to true, like this:

if(Input.GetKeyDown(KeyCode.P))
{
  // Toggle the paused setting
  paused = !paused;

  // If we are now paused we
  // set the timeScale to 0.
  // Otherwise, it is set to 1.
  if(paused)
    Time.timeScale = 0.0f;
  else
    Time.timeScale = 1.0f;

}

You could make your “paused” boolean static so that any script could access the paused state and exit when paused like this:

if(PlayerController.paused)
  return;

I would further suggest looking at what Time.timeScale is actually doing to your game and what other measures you might need to take to create an effective system here: Time.timeScale

Dont Set The Time Scale To 0, Because Then It Wont Call Update Functions. Just Do Something Really Tiny Like Time.timeScale = 0.01f,
Then It Will Still Call Updates, But Things Will Seem To Be Paused