You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/Scripts/AI/FSM_Template/States/MoveToSelectedResource.cs

43 lines
1.1 KiB
C#

3 months ago
using UnityEngine;
using UnityEngine.AI;
internal class MoveToSelectedResource : AIState
{
private readonly Gatherer _gatherer;
private readonly NavMeshAgent _navMeshAgent;
private readonly Animator _animator;
private static readonly int Speed = Animator.StringToHash("Speed");
private Vector3 _lastPosition = Vector3.zero;
public float TimeStuck;
public MoveToSelectedResource(Gatherer gatherer, NavMeshAgent navMeshAgent, Animator animator)
{
_gatherer = gatherer;
_navMeshAgent = navMeshAgent;
_animator = animator;
}
public override void Tick()
{
if (Vector3.Distance(_gatherer.transform.position, _lastPosition) <= 0f)
TimeStuck += Time.deltaTime;
_lastPosition = _gatherer.transform.position;
}
public override void OnEnter()
{
TimeStuck = 0f;
_navMeshAgent.enabled = true;
_navMeshAgent.SetDestination(_gatherer.Target.transform.position);
_animator.SetFloat(Speed, 1f);
}
public override void OnExit()
{
_navMeshAgent.enabled = false;
_animator.SetFloat(Speed, 0f);
}
}