using System; using UnityEngine; using UnityEngine.AI; namespace AsteroidGame.Entities { public class EnemyBase : EntityBase { [SerializeField] private SoEntityBaseRuntimeSet _enemyBaseSet; [Header("Targeter")] [SerializeField] private Targeter _targeter; [SerializeField] private EntityBase _target; [Header("NavMeshAgent")] [SerializeField] private SoTargeterConfig _targeterConfig; [SerializeField] private NavMeshAgent _navMeshAgent; protected override void OnEnable() { base.OnEnable(); _enemyBaseSet.Add(this); InitializeTargeter(); InitializeNavMeshAgent(); } private void InitializeNavMeshAgent() { _navMeshAgent = gameObject.AddComponent(); _navMeshAgent.speed = 0.1f; } private void InitializeTargeter() { _targeter = gameObject.AddComponent(); _targeter.SetParent(this); _targeter.SetConfig(_targeterConfig); } protected override void OnDisable() { base.OnDisable(); _enemyBaseSet.Remove(this); } private void Update() { if (_targeter.FoundTarget()) { _target = _targeter.GetTarget(); _navMeshAgent.SetDestination(_target.GetBasePosition()); } } } }