public virtual void Shoot(Ray headRay) { if (!canShoot) { return; } if (Ammo <= 0) { // Play no ammo sound return; } lastShot = 0f; canShoot = false; this.Ammo -= 1; GunAudio.Play(); WeaponSprite.Play("Shoot"); // Debug.DrawRay(headRay.origin, headRay.direction, Color.white, 20.0f, false); if (!Physics.Raycast(headRay, out shotHit, Range * 10)) { return; } switch (shotHit.collider.tag) { case "Enemy": BaseMonster monster = shotHit.collider.GetComponent <BaseMonster>(); if (monster == null) { var enemyHealth = shotHit.collider.GetComponent <Durability>(); enemyHealth.TakeDamage(Damage); return; } monster.GetHit(Damage); EnemyManager.Instance.DamageTaken(monster.Id, Damage); break; case "RemotePlayer": RemotePlayerHealth rp = shotHit.collider.GetComponent <RemotePlayerHealth>(); if (rp == null) { return; } rp.TakeDamage(Damage / 5); break; } }