Bools not changing...
I have voids that make a player move to a different spot on my map and should enable or disable some bools. I'm calling them from button onclicks. The player moves to the spot, but the bools don't change. The bools seem to change only when i put them in the start function. Just to be a bit more clear as well, they aren't setting as true, then turning back to false. They never turn true in the first place. This is also a networkbehavior script.
public Rigidbody Player;
public Camera PlayerCamera;
public AudioListener PlayerAudio;
public Camera SpectateCamera;
public AudioListener SpectateAudio;
public MeshRenderer Body;
public MeshRenderer Head;
public Collider BodyCollider;
public Collider HeadCollider;
GameObject PlayerBody;
bool ControllerEnabled;
bool PlayerCameraEnabled;
bool PlayerIsVisible;
bool GravityEnabled;
public void EnterSpectateMode()
{
PlayerCameraEnabled = false;
PlayerIsVisible = false;
GravityEnabled = false;
PlayerBody = GameObject.Find("PlayerController(Clone)");
PlayerBody.transform.position = new Vector3(500, 30, 675);
}
public void JoinRedTeam()
{
PlayerCameraEnabled = true;
PlayerIsVisible = true;
GravityEnabled = true;
PlayerBody = GameObject.Find("PlayerController(Clone)");
PlayerBody.transform.position = new Vector3(617, 10, 500);
PlayerBody.transform.localRotation = Quaternion.Euler(0, -90, 0);
}
public void JoinBlueTeam()
{
PlayerCameraEnabled = true;
PlayerIsVisible = true;
GravityEnabled = true;
PlayerBody = GameObject.Find("PlayerController(Clone)");
PlayerBody.transform.position = new Vector3(383, 10, 500);
PlayerBody.transform.localRotation = Quaternion.Euler(0, 90, 0);
}
void Start ()
{
EnterSpectateMode();
}
void Update ()
{
if (PlayerCameraEnabled)
{
PlayerCamera.enabled = true;
PlayerAudio.enabled = true;
SpectateCamera.enabled = false;
SpectateAudio.enabled = false;
}
else
{
SpectateCamera.enabled = true;
SpectateAudio.enabled = true;
PlayerCamera.enabled = false;
PlayerAudio.enabled = false;
}
if (PlayerIsVisible)
{
Body.enabled = true;
BodyCollider.enabled = true;
Head.enabled = true;
HeadCollider.enabled = true;
}
else
{
Body.enabled = false;
BodyCollider.enabled = false;
Head.enabled = false;
HeadCollider.enabled = false;
}
if (GravityEnabled)
{
Player.useGravity = true;
}
else
{
Player.useGravity = false;
}
This seems very odd. Can anyone see why this isn't working? Thanks in advance.
Nothing seems to be wrong with this script, but there isn't any handling of network behaviour so it will only work locally.
Hmm I figured it had something to do with networking. I'm not quite sure what you mean by it not having handling of network behaviour. Do you think you could explain a bit further?
If you are new to networking you should have a look at this https://unity3d.com/learn/tutorials/topics/multiplayer-networking . Networking can quickly become very complex so it is difficult to explain everything here.
Your answer
Follow this Question
Related Questions
Cannot implicitly convert type `void' to `bool' 1 Answer
Cannot implicitly convert type 'void' to 'bool' 1 Answer
The bool activates and deactivates but the script in the if statement doesn´t work 1 Answer
In void bool dont changing 1 Answer
How do I check if bool is true from another script? 2 Answers