Hey, I want to recreate the Tanks! game from the Unity tutorial series as multiplayer. I already watched the Network series for that as well. But I have a problem with implementing the shooting right. The tanks can charge up to increase the launch force of the bullet. It works for the host but the client gets stuck in firing.
The code:
[ClientCallback]
private void Update()
{
if (!isLocalPlayer)
return;
if (m_CurrentLaunchForce >= MaxLaunchForce && !m_Fired)
{
m_CurrentLaunchForce = MaxLaunchForce;
Debug.Log("Max force achieved! Firing!");
CmdFire();
}
else if (Input.GetButtonDown("Fire1"))
{
m_Fired = false;
m_CurrentLaunchForce = MinLaunchForce;
Debug.Log("Start charging up!");
}
else if (Input.GetButton("Fire1") && !m_Fired)
{
m_CurrentLaunchForce += m_ChargeSpeed * Time.deltaTime;
Debug.Log("Charging up!");
}
else if (Input.GetButtonUp("Fire1") && !m_Fired)
{
Debug.Log("Firing with low force!");
CmdFire();
}
}
[Command]
private void CmdFire()
{
m_Fired = true;
Rigidbody shellInstance = Instantiate(ShellPrefab, FireTransform.position, FireTransform.rotation);
shellInstance.velocity = m_CurrentLaunchForce * transform.forward;
m_CurrentLaunchForce = MinLaunchForce;
NetworkServer.Spawn(shellInstance.gameObject);
m_Fired = false;
}
The client which is not the host gets stuck in the second if case :
if (m_CurrentLaunchForce >= MaxLaunchForce && !m_Fired)
I checked the variables in the Debugger, and the currentLaunchForce gets never resetted to minLaunchForce.