Question by 
               coolkidjeff6031 · Jan 03, 2020 at 11:13 PM · 
                raycastgun  
              
 
              why does my raycast stop working after a few seconds?
i have a gun that uses a raycast to detect an enemy. before this code was working perfectly but now when i shoot an enemy after i wait a couple seconds the raycast does not detect the enemy
this is the gun code
 using System.Collections;
 using UnityEngine;
 
 public class Gun : MonoBehaviour
 {
     public float damage = 25f;
     public float range = .00000000000000000000000001f;
     public float fireRate = 1f;
 
    public int maxAmmo = 5;
     private int currentAmmo;
     public float reloadTime = 3f;
    public bool isReloading = true;
 
     public Camera fpsCam;
     public ParticleSystem MuzzleFlash;
     public GameObject impactEffect;
     public float impactForce = 30f;
 
     private float nextTimeToFire = 0f;
 
     public Animator animator;
 
     
 
     private void Start()
     {
         currentAmmo = maxAmmo;
 
        
     }
 
     void OnEnable()
     {
         isReloading = false;
         animator.SetBool("Reloading", false);
     }
 
     // Update is called once per frame
     void Update()
     {
 
         if (isReloading)
             return;
 
 
         if (currentAmmo <= 0)
         {
           StartCoroutine(Reload());
             return;
         }
 
         if (Input.GetButtonDown("Fire1") && Time.time >= nextTimeToFire)
         {
             nextTimeToFire = Time.time + 1f / fireRate;
             Shoot();
         }
     }
 
     IEnumerator Reload()
     {
         isReloading = true;
         Debug.Log("RELOAD");
 
         animator.SetBool("Reloading", true);
 
         yield return new WaitForSeconds(reloadTime - .25f);
         animator.SetBool("Reloading", false);
         yield return new WaitForSeconds(.25f);
 
         currentAmmo = maxAmmo;
        
        
         isReloading = false;
        
     }
 
     void Shoot()
     {
         MuzzleFlash.Play();
 
         currentAmmo--;
 
         RaycastHit hit;
         if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
         {
             Debug.Log(hit.transform.name);
 
             Enemy enemy = hit.transform.GetComponent<Enemy>();
             if (enemy != null)
             {
                 enemy.TakeDamage(damage);
             }
 
             if (hit.rigidbody != null)
             {
                 hit.rigidbody.AddForce(hit.normal * impactForce);
             }
 
 
             if (isReloading == true)
             {
                 animator.SetBool("Shooting", false);
            
             }
         }
         
         GameObject impactGO =  Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
         Destroy(impactGO, 2f);
     
     }
 }
 **
 
 
 here is the enemy script
 
 
 **public class Enemy : MonoBehaviour
 {
     public float health = 50f;
 
     public void TakeDamage(float amount)
     {
         health -= amount;
 
         if (health <= 0f)
         {
             Die();
         }
     }
 
 
 
     void Die ()
     {
         Destroy(gameObject);
     }
 
 }
 
 
 
              
               Comment
              
 
               
              Answer by lgarczyn · Jan 04, 2020 at 07:08 PM
Your 'range' variable is extremely small, your raycast should actually never work.
Your answer
 
             Follow this Question
Related Questions
How do you make bullet Spread? 0 Answers
How do I push objects with a laser gun 0 Answers
Getting a crosshair to project onto the object a barrel is aiming at 0 Answers
Shotguns with raycasts 0 Answers
Strange Raycast problem 0 Answers