AsteroidGame/Assets/Entities/Enemies/Scripts/EnemyBase.cs

55 lines
1.4 KiB
C#

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>();
_navMeshAgent.speed = 0.1f;
}
private void InitializeTargeter()
{
_targeter = gameObject.AddComponent<Targeter>();
_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());
}
}
}
}