タンクを再現したい!ユニティチュートリアルシリーズのマルチプレイヤーゲーム。私はすでにネットワークシリーズを見てきました。しかし、私は射撃権を実装することに問題があります。タンクは弾薬の発射力を高めるために充電することができます。それはホストのために働いていますが、クライアントは発射に立ち往生します。Unity3Dネットワークシューティングループ(クライアント用)
コード:
[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;
}
場合ならば、ホストが秒で立ち往生されていないクライアント:
if (m_CurrentLaunchForce >= MaxLaunchForce && !m_Fired)
私はデバッガで変数をチェックし、currentLaunchForceがresetted決してます〜minLaunchForce。