From 0e6bd812588f1c59407184fca42dd72d1b89a18b Mon Sep 17 00:00:00 2001 From: Arthur Ribeiro Date: Thu, 30 Jun 2022 15:21:08 -0300 Subject: [PATCH] Display missile charging for every client --- .../Resources/PhotonServerSettings.asset | 1 + Assets/Scripts/Gameplay/Tank/TankShooting.cs | 50 +++++++++++-------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/Assets/Photon/PhotonUnityNetworking/Resources/PhotonServerSettings.asset b/Assets/Photon/PhotonUnityNetworking/Resources/PhotonServerSettings.asset index beea698..4c0e093 100644 --- a/Assets/Photon/PhotonUnityNetworking/Resources/PhotonServerSettings.asset +++ b/Assets/Photon/PhotonUnityNetworking/Resources/PhotonServerSettings.asset @@ -42,6 +42,7 @@ MonoBehaviour: - OnHit - Turbo - FireMissile + - StartChargingMissile DisableAutoOpenWizard: 1 ShowSettings: 0 DevRegionSetOnce: 0 diff --git a/Assets/Scripts/Gameplay/Tank/TankShooting.cs b/Assets/Scripts/Gameplay/Tank/TankShooting.cs index 57bc305..d45d9e3 100644 --- a/Assets/Scripts/Gameplay/Tank/TankShooting.cs +++ b/Assets/Scripts/Gameplay/Tank/TankShooting.cs @@ -25,7 +25,7 @@ public class TankShooting : MonoBehaviour private float currentLaunchForce; private float chargeSpeed; - private bool fired; + private bool isChargingMissile; private void OnEnable() { @@ -41,12 +41,24 @@ private void Start() private void Update() { + UpdateMissileCharge(); + if (!photonView.IsMine) return; TryFireMissile(); TryFireHomingMissile(); } + private void UpdateMissileCharge() + { + aimSlider.value = minLaunchForce; + + if (!isChargingMissile) return; + + currentLaunchForce += chargeSpeed * Time.deltaTime; + aimSlider.value = currentLaunchForce; + } + private void TryFireHomingMissile() { if (!Input.GetButtonDown(HOMING_MISSILE_BUTTON)) return; @@ -86,50 +98,48 @@ private bool GetClickPosition(out Vector3 clickPos) private void TryFireMissile() { - aimSlider.value = minLaunchForce; - - if (currentLaunchForce >= maxLaunchForce && !fired) + if (currentLaunchForce >= maxLaunchForce && isChargingMissile) { currentLaunchForce = maxLaunchForce; FireMissile(); } else if (Input.GetButtonDown(FIRE_BUTTON)) { - fired = false; - currentLaunchForce = minLaunchForce; - - shootingAudio.clip = chargingClip; - shootingAudio.Play(); - } - else if (Input.GetButton(FIRE_BUTTON) && !fired) - { - currentLaunchForce += chargeSpeed * Time.deltaTime; - - aimSlider.value = currentLaunchForce; + photonView.RPC(nameof(StartChargingMissile), RpcTarget.All); } - else if (Input.GetButtonUp(FIRE_BUTTON) && !fired) + else if (Input.GetButtonUp(FIRE_BUTTON) && isChargingMissile) { FireMissile(); } } - private void FireMissile() + [PunRPC] + private void StartChargingMissile() { - fired = true; + isChargingMissile = true; + currentLaunchForce = minLaunchForce; + + shootingAudio.clip = chargingClip; + shootingAudio.Play(); + } + + private void FireMissile() + { photonView.RPC( nameof(FireMissile), RpcTarget.All, fireTransform.position, fireTransform.rotation, currentLaunchForce * fireTransform.forward); - - currentLaunchForce = minLaunchForce; } [PunRPC] private void FireMissile(Vector3 position, Quaternion rotation, Vector3 velocity) { + isChargingMissile = false; + currentLaunchForce = minLaunchForce; + Rigidbody shellInstance = Instantiate(shell, position, rotation); shellInstance.velocity = velocity;