hey guys i’m working on my td game and make this so the tower can attack multiple targets at once is working as expected but somehow i feel like it could get better?
void Attake()
{
switch (attackType)
{
case AttackType.one:
if (Target == null || Target.Isdead())
{
if (Target != null)
{
if (targets.Contains(Target))
{
targets.Remove(Target);
}
Target = null;
}
return;
}
Vector3 ToLook = Target.transform.position;
ToLook.y = Turret.transform.position.y;
Turret.transform.LookAt(ToLook);
if (Time.time > NextFire)
{
GameObject projectile = PoolManager.instants.Getbullets(BulletId);
if (projectile == null)
{
Debug.Log("something wrong with pool");
}
Projectiles _projectile = projectile.GetComponent<Projectiles>();
projectile.transform.position = FirePoint.position;
_projectile.Target = Target;
_projectile.speed = attackspeed;
projectile.SetActive(true);
NextFire = Time.time + firerate;
}
break;
case AttackType.two:
for(int i = 0; i< Targets.Length; i++)
{
if(Targets[i] == null || Targets[i].Isdead())
{
if (Targets[i] != null)
{
if (targets.Contains(Targets[i]))
{
targets.Remove(Targets[i]);
}
Targets[i] = null;
}
return;
}
}
foreach(EnemyScript e in Targets)
{
if (e != null)
{
Vector3 ToLookTwo = e.transform.position;
ToLookTwo.y = Turret.transform.position.y;
Turret.transform.LookAt(ToLookTwo);
break;
}
}
if (Time.time > NextFire)
{
foreach(EnemyScript e in Targets)
{
GameObject projectile = PoolManager.instants.Getbullets(BulletId);
if (projectile == null)
{
Debug.Log("something wrong with pool");
}
Projectiles _projectile = projectile.GetComponent<Projectiles>();
projectile.transform.position = FirePoint.position;
_projectile.Target = e;
_projectile.speed = attackspeed;
projectile.SetActive(true);
NextFire = Time.time + firerate;
}
}
break;
}
}