55 lines
1.4 KiB
C#
55 lines
1.4 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using UnityEngine.AI;
|
|
|
|
namespace AsteroidGame.Entities
|
|
{
|
|
public class EnemyBase : EntityBase
|
|
{
|
|
[SerializeField] private SEntityBaseRuntimeSet _enemyBaseSet;
|
|
|
|
[Header("Targeter")]
|
|
[SerializeField] private STargeterConfig _targeterConfig;
|
|
[SerializeField] private Targeter _targeter;
|
|
[SerializeField] private EntityBase _target;
|
|
|
|
[Header("NavMeshAgent")]
|
|
[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());
|
|
}
|
|
}
|
|
}
|
|
} |