public void Shoot() { float shotDistance = range; if (CanShoot()) { Ray ray = new Ray(spawn.position, spawn.forward); RaycastHit hit; if (Physics.Raycast(ray, out hit, shotDistance, collisionMask)) { shotDistance = hit.distance; if (hit.collider.GetComponent <CarHealth>()) { hit.collider.GetComponent <CarHealth>().TakeDamage(10, player.GetComponent <CarGenerateInputStrings>().player); } Debug.Log("Hit something"); } nextPossibleShootTime = Time.time + secondsBetweenShots; if (tracer) { Vector3[] parms = new Vector3[2] { ray.origin, ray.GetPoint(shotDistance) }; StartCoroutine("RenderTracer", parms); } Debug.DrawRay(ray.origin, shotDistance * ray.direction, Color.red, 1); // Instantiate particle system on hit GameObject currentParticle = Instantiate(hitParticle, ray.GetPoint(shotDistance), Quaternion.identity); currentParticle.transform.LookAt(transform); Destroy(currentParticle, 1.0f); if (aHandler.CanPlayAudio()) { aHandler.PlayAudio(gunSound); } } }