private void ShootDownEvent()
 {
     if (null != OnShootEvent)
     {
         OnShootEvent.Invoke();
     }
 }
        public void Shoot(Rigidbody2D thingToShoot, bool forced = false)
        {
            if (canShoot && (cooledDown || forced))
            {
                cooledDown = false;
                var thing = Instantiate(thingToShoot);
                thing.gameObject.SetActive(true);
                thing.transform.position = transform.position;
                var mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                mousePos.z = 0;
                var dir       = mousePos - transform.position;
                var magnitude = Mathf.Clamp(dir.magnitude * speed, minSpeed, maxSpeed);
                var normDir   = dir;
                normDir.Normalize();
                thing.velocity = normDir * magnitude;

                onShoot.Invoke(thing.transform);
            }
        }