private void DetermineProjectile() { float distance = Vector2.Distance(target.transform.position, transform.position); if (distance > nearDistance) { projectileMode = ProjectileMode.Fireworks; } else { projectileMode = ProjectileMode.Spray; } }
void DetermineAttackMode() { float rand = Random.Range(0f, 1f); float distToPlayer = Vector2.Distance(target.transform.position, transform.position); if (distToPlayer > attackRange) { if (rand > 0.7f) { projectileMode = ProjectileMode.Seeker; attackCooldownCountdown = attackCooldown * 0.5f; } else { projectileMode = ProjectileMode.Spray; attackCooldownCountdown = attackCooldown; } } else if (distToPlayer > minComfortDistance) { if (rand > 0.5f) { projectileMode = ProjectileMode.Seeker; attackCooldownCountdown = attackCooldown * 0.5f; } else { projectileMode = ProjectileMode.Spray; attackCooldownCountdown = attackCooldown; } } else { if (rand > 0.3f) { projectileMode = ProjectileMode.Seeker; attackCooldownCountdown = attackCooldown * 0.5f; } else { projectileMode = ProjectileMode.Spray; attackCooldownCountdown = attackCooldown; } } }
// decides which projectile to use next based on randomness & distance from player private void DetermineNextProjectile() { float dist = Vector2.Distance(transform.position, target.transform.position); float rand = Random.Range(0f, 1f); if (dist > attackRange) { if (rand > 0.8f) { projectileMode = ProjectileMode.SeekerProjectile; } else if (rand > 0.5f) { projectileMode = ProjectileMode.SprayProjectile; } else { projectileMode = ProjectileMode.RegularProjectile; } } else if (dist > minComfortDistance) { if (rand > 0.4f) { projectileMode = ProjectileMode.SprayProjectile; } else { projectileMode = ProjectileMode.RegularProjectile; } } else { projectileMode = ProjectileMode.RegularProjectile; } }
// Start is called before the first frame update void Start() { EnemyInitialize(); projectileMode = ProjectileMode.Fireworks; }