Modifying a variable outside of player object.

Hi, im trying to create a 2D multiplayer game.
I have this bool isBoosted changed to true when it collides with something like some sort of a speed up.

Here is the script that modifies it.

public class MultiPowerUpRun : MonoBehaviour {

	// Use this for initialization
	public float boostTime;
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
	public void OnTriggerEnter2D(Collider2D other){
		if (other.tag == "Player") {
			other.GetComponent<PlayerManager>().isBoosted = true;
			if(GameController.control.speedlvl == 0){
				boostTime = 4f;
			}
			if(GameController.control.speedlvl == 1){
				boostTime = 4.5f;
			}
			if(GameController.control.speedlvl == 2){
				boostTime = 4.7f;
			}
			if(GameController.control.speedlvl == 3){
				boostTime = 5f;
			}
			if(GameController.control.speedlvl == 4){
				boostTime = 5.5f;
			}
			if(GameController.control.speedlvl == 5){
				boostTime = 6f;
			}
			//other.GetComponent<PlayerManager>().resetIsBoosted(boostTime);
			Destroy(gameObject);
		}
	}
}

Now here in my playerscript. I print out the value of isBoosted and my speedX.
Here is the script

public class PlayerManager : NetworkBehaviour{
	static float speedX;
	static float speedY;
	static bool facingright;
	static bool isShooting;
	static Animator anim;
	static Rigidbody2D myBody;

	public bool isBoosted;

	void Update (){
		Debug.Log ("Boosted: " + isBoosted + " SpeedX: " + speedX);

		if (isLocalPlayer) {
			if(isAlive){
				anim.SetBool("isAlive",true);
				MovePlayer (speedX);
				ariusManager(meterCount);
			if (facingright && speedX < 0 || !facingright && speedX > 0) {
					facingright = !facingright;
					flipHere ();
					CmdSendFlip (transform.localScale.x);
				}
				anim.SetFloat ("verticalSpeed", myBody.velocity.y);
				anim.SetBool ("isShooting", isShooting);
				if (isShooting) {
					Invoke ("resetShooting", 0.4f);
				}
			}
			else{
				anim.SetBool("isAlive",false);
			}
			LocalPop();
		}
	}

	void MovePlayer(float playerSpeed){
		myBody.velocity = new Vector3 (playerSpeed, myBody.velocity.y, 0);
	}



	public void WalkLeft(){
		if (!isAlive) {
			return;
		}

		if (isBoosted) {
			speedX = -20;
		} else {
			speedX = -9;
		}
		anim.SetBool ("Speed", true);
		pumpRelease ();
	}
    public void WalkRight(){
	if (!isAlive) {
		return;
	}

	if (isBoosted) {
		speedX = -20;
	} else {
		speedX = -9;
	}
	anim.SetBool ("Speed", true);
	pumpRelease ();
}

when the value of isBoosted is changed to true. I was expecting to see in the console “Boosted: True SpeedX: 20 or -20” but instead i still get “Boosted: True SpeedX: 9 or -9”

Well, the only methods that change those values are WalkRight and WalkRight, and I don’t see them called anywhere.

I’d suggest you use a property instead of just a variable for this kind of mechanics. Like :

private bool _isBoosted;
public bool IsBoosted
{
get { return _isBoosted; }
set
{
    if (_isBoosted != value)
    {
        if (_isBoosted)
        {
            speedX = -20;
        }
        else
        {
            speedX = -9;
        }
    }
}