60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class EnemyCommand : MonoBehaviour
|
|
{
|
|
[Header("Ñïèñîê âðàãîâ")]
|
|
public List<EnemyCombat> enemies = new();
|
|
|
|
[Header("Ññûëêà íà êîìàíäó ïèðàòîâ")]
|
|
public PirateCommand pirateTeam;
|
|
|
|
[Header("Òàéìèíãè")]
|
|
public Vector2 shootIntervalRange = new Vector2(10f, 15f);
|
|
|
|
private void Start()
|
|
{
|
|
StartCoroutine(ShootingRoutine());
|
|
}
|
|
|
|
private IEnumerator ShootingRoutine()
|
|
{
|
|
while (true)
|
|
{
|
|
float waitTime = Random.Range(shootIntervalRange.x, shootIntervalRange.y);
|
|
yield return new WaitForSeconds(waitTime);
|
|
|
|
AssignRandomEnemyToShoot();
|
|
}
|
|
}
|
|
|
|
private void AssignRandomEnemyToShoot()
|
|
{
|
|
if (enemies.Count == 0 || pirateTeam == null || pirateTeam.pirates.Count == 0) return;
|
|
|
|
// ôèëüòðóåì àêòèâíûõ âðàãîâ
|
|
List<EnemyCombat> freeEnemies = enemies.FindAll(e => e.IsActiveTarget());
|
|
if (freeEnemies.Count == 0) return;
|
|
|
|
EnemyCombat enemy = freeEnemies[Random.Range(0, freeEnemies.Count)];
|
|
|
|
// âûáèðàåì ñëó÷àéíîãî ïèðàòa èç êîìàíäû (èìèòàöèÿ ñòðåëüáû)
|
|
List<Pirate> activePirates = pirateTeam.pirates;
|
|
if (activePirates.Count == 0) return;
|
|
|
|
Pirate targetPirate = activePirates[Random.Range(0, activePirates.Count)];
|
|
|
|
// äàåì âðàãó öåëü
|
|
enemy.SetTarget(targetPirate.transform);
|
|
}
|
|
|
|
public void ClearAllTargets()
|
|
{
|
|
foreach (var enemy in enemies)
|
|
{
|
|
enemy.SetTarget(null);
|
|
}
|
|
}
|
|
}
|