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; }