public void Shoot(Vector3 target, Vector3 spawnPoint)
        {
            if (lastShotTime + cooldown > Time.time)
            {
                return;
            }
            lastShotTime = Time.time;
            enemy.Anim.SetTrigger("attack");
            Projectile proj = projectileFactory.CreateInstance();

            proj.heading            = (target - transform.position).normalized;
            proj.transform.position = spawnPoint;
        }
        private void Split()           // TODO fix weird split
        {
            ProjectileFactory fact  = ProjectileFactory.CreateFactory(ProjectileType.IceSpike, instability);
            float             side  = (Random.value >= .5f) ? 1f : -1f;
            float             angle = Random.Range(side * minSplitAngle, side * maxSplitAngle);

            fact.heading = Quaternion.Euler(0f, angle, 0f) * heading;
            heading      = Quaternion.Euler(0f, -angle, 0f) * heading;
            IceSpikeProjectile proj = fact.CreateInstance() as IceSpikeProjectile;

            proj.transform.position = transform.position;
            proj.distanceTravelled  = 0f;
            proj.splitDepth         = splitDepth + 1;
            proj.minSplitDistance   = minSplitDistance;
            proj.maxSplitDistance   = maxSplitDistance;
            proj.minSplitAngle      = minSplitAngle;
            proj.maxSplitAngle      = maxSplitAngle;
            proj.maxSplits          = maxSplits;
            proj.eraticAngle        = eraticAngle;
        }