Quantcast
Channel: Questions in topic: "gun"
Viewing all articles
Browse latest Browse all 592

why does my raycast stop working after a few seconds?

$
0
0
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(); 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); } }

Viewing all articles
Browse latest Browse all 592

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>