1
This commit is contained in:
52
Assets/Artists/Scripts/Entities/AI/AIService.cs
Normal file
52
Assets/Artists/Scripts/Entities/AI/AIService.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using BITFALL.AI.States;
|
||||
using BITKit;
|
||||
using BITKit.AI.States;
|
||||
using BITKit.Entities;
|
||||
using BITKit.Sensors;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
using UnityEngine.PlayerLoop;
|
||||
|
||||
namespace BITFALL.AI
|
||||
{
|
||||
/// <summary>
|
||||
/// AI服务
|
||||
/// </summary>
|
||||
[CustomType(typeof(AIService))]
|
||||
public class AIService : StateBasedBehavior<AI_Base>
|
||||
{
|
||||
[SerializeReference,SubclassSelector] private ITicker ticker;
|
||||
[SerializeField] private NavMeshAgent agent;
|
||||
[SerializeField] private RangeSensor rangeSensor;
|
||||
[SerializeField] private AudioSensor audioSensor;
|
||||
[SerializeField] private Tag selfTag;
|
||||
[SerializeField] private Tag friendTag;
|
||||
[SerializeField] private Tag enemyTag;
|
||||
|
||||
public IEntity CombatTarget { get; set; }
|
||||
|
||||
public RangeSensor RangeSensor => rangeSensor;
|
||||
public AudioSensor AudioSensor => audioSensor;
|
||||
public NavMeshAgent Agent => agent;
|
||||
public ITag SelfTag => selfTag;
|
||||
public ITag FriendTag => friendTag;
|
||||
public ITag EnemyTag => enemyTag;
|
||||
public override void OnStart()
|
||||
{
|
||||
base.OnStart();
|
||||
ticker.Add(OnTick);
|
||||
TransitionState<Idle>();
|
||||
}
|
||||
private void OnTick(float obj)
|
||||
{
|
||||
UpdateState(obj);
|
||||
}
|
||||
public override void OnDestroyComponent()
|
||||
{
|
||||
base.OnDestroyComponent();
|
||||
ticker.Remove(OnTick);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user