public void SetRightWeapon(GameObject weapon) { if (weapon != null) { var w = weapon.GetComponent <vShooterWeapon>(); rWeapon = w; if (rWeapon) { rWeapon.ignoreTags = ignoreTags; rWeapon.hitLayer = aimTargetLayer; rWeapon.root = transform; rWeapon.onDestroy.AddListener(OnDestroyWeapon); if (usingThirdPersonController) { if (useAmmoDisplay && !ammoDisplay) { ammoDisplay = FindObjectOfType <vAmmoDisplay>(); } if (useAmmoDisplay && ammoDisplay) { ammoDisplay.Show(); } UpdateTotalAmmo(); } currentShotTime = 0; } } }
public virtual void Shoot(Vector3 aimPosition, bool applyHipfirePrecision = false) { if (isShooting) { return; } if (rWeapon.ammoCount > 0) { var _aimPos = applyHipfirePrecision ? aimPosition + HipFirePrecision(aimPosition) : aimPosition; rWeapon.ShootEffect(_aimPos, transform); if (applyRecoilToCamera) { var recoilHorizontal = Random.Range(rWeapon.recoilLeft, rWeapon.recoilRight); var recoilUp = Random.Range(0, rWeapon.recoilUp); StartCoroutine(Recoil(recoilHorizontal, recoilUp)); } if (useAmmoDisplay && !ammoDisplay) { ammoDisplay = FindObjectOfType <vAmmoDisplay>(); } if (useAmmoDisplay && ammoDisplay) { ammoDisplay.UpdateDisplay(string.Format("{0} / {1}", rWeapon.ammoCount, totalAmmo), rWeapon.ammoID); } } else { rWeapon.EmptyClipEffect(); } currentShotTime = rWeapon.shootFrequency; }
public virtual void Shoot(Vector3 aimPosition) { if (rWeapon.ammoCount > 0) { shotting = true; rWeapon.ShootEffect(aimPosition, transform); if (applyRecoilToCamera) { var recoilHorizontal = Random.Range(rWeapon.recoilLeft, rWeapon.recoilRight); var recoilUp = Random.Range(0, rWeapon.recoilUp); StartCoroutine(Recoil(recoilHorizontal, recoilUp)); } if (animator) { animator.SetTrigger("Shoot"); } StartCoroutine(ResetShot(rWeapon.shootFrequency)); if (useAmmoDisplay && !ammoDisplay) { ammoDisplay = FindObjectOfType <vAmmoDisplay>(); } if (useAmmoDisplay && ammoDisplay) { ammoDisplay.UpdateDisplay(string.Format("{0} / {1}", rWeapon.ammoCount, totalAmmo), rWeapon.ammoID); } } else { shotting = true; rWeapon.EmptyClipEffect(); StartCoroutine(ResetShot(rWeapon.shootFrequency)); } }
protected virtual void HideAmmoDisplay(vAmmoDisplay ammoDisplay) { if (useAmmoDisplay && ammoDisplay) { ammoDisplay.UpdateDisplay(""); ammoDisplay.Hide(); } }
public void OnDestroyWeapon(GameObject otherGameObject) { if (usingThirdPersonController) { if (useAmmoDisplay && !ammoDisplay) { ammoDisplay = FindObjectOfType <vAmmoDisplay>(); } if (useAmmoDisplay && (ammoDisplay && (rWeapon == null || rWeapon.gameObject.Equals(otherGameObject)))) { ammoDisplay.UpdateDisplay(""); ammoDisplay.Hide(); } } }
protected void GetAmmoDisplays() { var ammoDisplays = FindObjectsOfType <vAmmoDisplay>(); if (ammoDisplays.Length > 0) { if (!ammoDisplayL) { ammoDisplayL = ammoDisplays.vToList().Find(d => d.displayID == leftWeaponAmmoDisplayID); } if (!ammoDisplayR) { ammoDisplayR = ammoDisplays.vToList().Find(d => d.displayID == rightWeaponAmmoDisplayID); } } }
public void UpdateTotalAmmo() { var ammoCount = 0; var ammo = WeaponAmmo(); if (ammo != null) { ammoCount += ammo.count; } if (totalAmmoHandler != null) { totalAmmoHandler(rWeapon.ammoID, ref ammoCount); } totalAmmo = ammoCount; if (useAmmoDisplay && !ammoDisplay) { ammoDisplay = FindObjectOfType <vAmmoDisplay>(); } if (useAmmoDisplay && ammoDisplay) { ammoDisplay.UpdateDisplay(string.Format("{0} / {1}", rWeapon.ammoCount, totalAmmo), rWeapon.ammoID); } }